Javascript 获取请求的子对象的名称
如果我有一个包含匿名函数的对象,我如何知道请求的子对象是什么,这样我就可以返回一个值Javascript 获取请求的子对象的名称,javascript,object,switch-statement,return-value,Javascript,Object,Switch Statement,Return Value,如果我有一个包含匿名函数的对象,我如何知道请求的子对象是什么,这样我就可以返回一个值 var obj = function(a) { switch (a) { case 'subprop1': return 'subval1'; case 'subprop2': return 'subval2'; case 'subprop3': return 'subval3'; default: return 'defaultval';
var obj = function(a) {
switch (a) {
case 'subprop1': return 'subval1';
case 'subprop2': return 'subval2';
case 'subprop3': return 'subval3';
default: return 'defaultval';
}
}
因此,如果我打电话:
obj.subprop1
我应该得到:
subval1
调用obj(“subprop1”)代码>
obj
被定义为函数,因此您可以像调用声明函数一样调用它(这称为命名函数表达式)
如果要执行obj.subpop1
,则需要将obj
定义为这样一个对象
obj = {
subprop1: 'subval1',
subprop2: 'subval2',
...
};
console.log(obj.subprop1); //Spits out "subval1"
除非您的环境支持,否则对于普通对象,这实际上是不可能的
在这种情况下,这将非常容易(尚未测试):
我相信像DefaultGetter这样的东西(如果你指的是对象,而不是你发布的代码片段中的函数)可以解决你的问题,但显然没有这样的东西,你可以在这里阅读更多
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