如果我有一个带有匿名函数的对象,我怎么知道正在请求哪个子对象,以便我可以返回一个值?
var obj = function(a) {
switch (a) {
case 'subprop1': return 'subval1';
case 'subprop2': return 'subval2';
case 'subprop3': return 'subval3';
default: return 'defaultval';
}
}
所以,如果我打电话:
obj.subprop1
我应该得到:
subval1
答案 0 :(得分:1)
除非您的环境支持Proxy
,否则普通对象无法实现这一点。
在这种情况下,它很容易(没有经过测试):
var obj = function(a) {
switch (a) {
case 'subprop1': return 'subval1';
case 'subprop2': return 'subval2';
case 'subprop3': return 'subval3';
default: return 'defaultval';
}
};
var objProxy = new Proxy(obj, {
get: function (target, name) { return target(name); }
});
objProxy.subprop1; //should return subval1
objProxy.nonExisting; //shoud return defaultval
答案 1 :(得分:-1)
致电obj("subprop1");
obj
被定义为函数,因此您可以将其称为声明函数(这称为命名函数表达式)。
如果您想obj.subprop1
,则需要将obj
定义为对象
obj = {
subprop1: 'subval1',
subprop2: 'subval2',
...
};
console.log(obj.subprop1); //Spits out "subval1"