我想基于字符串来计算对象的属性。 但是这些属性定义可能引用另一个称为“ actor ”的对象。
如果此 actor 存在(并非总是如此),我的代码可以工作,如果 actor 不存在(未定义),我希望求值返回< strong> NaN 用于依赖于
示例:
属性定义字符串可能类似于:
"name = 'pant leg insurance';
cost = 10;
useful = actor.hasPants();
max = actor._legs;"
这些变量是在定义字符串运行之前定义的
eval(propertyString);
如果
我已经进行了一些研究并找到了 Proxy 对象,但这仅在我想访问 actor 的直接属性(既不带函数也不带属性)时才有用这是 actor 的属性[...]的属性。
var actor;
if (actor === undefined) {
actor = new Proxy({}, {
get: function(target, property) {
return NaN;
}
});
}
console.log(actor.anything);
console.log(actor.anyfunction());
console.log(actor.anything.anything);
console.log(actor.anything.anyfunction());
如何实现此代码段对 actor 上的任何属性或函数调用返回 NaN ?
答案 0 :(得分:1)
不,代理无法实现这一目标。访问属性时,您不知道是将其直接用于赋值还是将其作为方法调用,因此无法确定是返回NaN
还是函数。没有可调用的NaN
值。
相反,您将需要处理属性定义字符串(无论如何,您都可能想要这样做,因为分配未声明的变量是邪恶的)并测试每行actor
的用法,以及何时使用if-然后不存在NaN
逻辑。