我真的不知道用正确的词来描述我想要做的事情,但功能与覆盖PHP类的__get()函数非常相似。例如,这就是我想要做的。
var obj = {
param1:'a',
func1:function(){ return '1';},
catch_all:function(input){
return input;
}
}
//alerts 'a'
alert( obj.param1 );
//alerts '1'
alert( obj.func1() );
//alerts 'anything'
alert( obj.anything );
基本上我想要一种方法将任何未使用的密钥重定向到预定义的密钥。我对此做了一些研究,并且真的不知道要搜索什么。任何帮助是极大的赞赏。感谢。
答案 0 :(得分:2)
你可以制作一个get函数,但除此之外你不能做你想要的。
获取功能:
var obj = {
param1:'a',
func1:function(){ return '1';},
get: function(input){
return this[input] !== undefined ? this[input] : 'ERROR';
}
}
//alerts 'a'
alert( obj.param1 );
//alerts '1'
alert( obj.func1() );
//alerts 'ERROR'
alert( obj.get('anything') );
答案 1 :(得分:2)
使用当前的JavaScript实现这是不可能的。在ObjC或其他语言中没有任何类型的默认getter。
答案 2 :(得分:1)
请在get方法的代码中找到更改。它可以通过obj
的{{1}}来修改内存值参考。
param1
答案 3 :(得分:0)
我认为你想要的是和谐代理。
http://wiki.ecmascript.org/doku.php?id=harmony:proxies&s=proxy
它们还没有使用JavaScript,至少在当前的任何Web浏览器实现中都没有。