Javascript 如何向对象的任何属性或函数调用返回特定值?

Javascript 如何向对象的任何属性或函数调用返回特定值?,javascript,Javascript,我想根据字符串计算对象的属性。 但这些属性定义可能引用另一个名为“actor”的对象 如果此参与者存在(并非总是如此),则我的代码可以工作;如果参与者不存在(未定义),则我希望计算结果为依赖于参与者的属性返回NaN 示例: 属性定义字符串可能如下所示: "name = 'pant leg insurance'; cost = 10; useful = actor.hasPants(); max = actor._legs;" 这些变量是在运行定义字符串之前定义的 eval(propertySt

我想根据字符串计算对象的属性。 但这些属性定义可能引用另一个名为“actor”的对象

如果此参与者存在(并非总是如此),则我的代码可以工作;如果参与者不存在(未定义),则我希望计算结果为依赖于参与者的属性返回NaN

示例:

属性定义字符串可能如下所示:

"name = 'pant leg insurance';
cost = 10;
useful = actor.hasPants();
max = actor._legs;"
这些变量是在运行定义字符串之前定义的

eval(propertyString);
如果参与者存在,一切正常,但如果参与者不存在,我希望每个依赖参与者的值(在本例中为“有用”和“最大”)返回NaN

我已经做了一些研究,发现了代理对象,但这只在我想访问actor的直接属性时有用,既不使用函数,也不使用actor的属性[…]的属性

var-actor;
if(actor==未定义){
actor=新代理({}{
get:函数(目标、属性){
返回NaN;
}
});
} 
console.log(actor.anything);
log(actor.anyfunction());
console.log(actor.anything.anything);

log(actor.anything.anyfunction())否,代理无法实现此功能。当访问属性时,您不知道它是将直接用于赋值还是将作为方法调用,因此无法决定是返回
NaN
还是返回函数。没有可调用的
NaN


相反,您需要处理您的属性定义字符串(您可能无论如何都想这样做,因为分配给未声明的变量是有害的),并测试每一行的
actor
,当它确实应用了您的if not exists然后-
NaN
逻辑。

您尝试过方法hasOwnProperty()@SenadMeškin这样做的问题是(如果我理解正确的话),我需要将这些调用添加到属性定义字符串中。我希望避免这种情况,因为如果我在propertyString中实现这些检查,我可以直接使用
有用=((actor!==未定义)?actor.hasPants():NaN)
,如果我不必使属性定义字符串复杂化,这将是理想的。您真的需要使用
eval()