javascript - 如何将特定值返回给对象的任何属性或函数调用?

标签 javascript

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

如果这个 actor 存在(并非总是如此)我的代码有效,如果 actor 不存在(未定义)我希望评估返回 < strong>NaN 表示 actor 相关属性。

示例:

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

"name = 'pant leg insurance';
cost = 10;
useful = actor.hasPants();
max = actor._legs;"

这些变量是在定义字符串运行之前定义的

eval(propertyString);

如果 actor 存在,一切都很好,但如果 actor 不存在,我想要每个 actor 依赖值(在这种情况下'有用'和'最大')返回NaN

我已经研究了一下并找到了 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

最佳答案

不,代理无法做到这一点。当一个属性被访问时,你不知道它是直接在赋值中使用还是作为一个方法被调用,所以你无法决定是返回 NaN 还是一个函数。没有可调用的 NaN 值。

相反,您将需要处理您的属性定义字符串(无论如何您可能想要这样做,因为分配给未声明的变量是邪恶的)并测试每一行是否使用 actor,以及它何时适用你的 if-not-exists-then-NaN 逻辑。

关于javascript - 如何将特定值返回给对象的任何属性或函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093645/

相关文章:

javascript - Angular Directive(指令) : communicating values to controller with ampersand methods

javascript - 在 span/div 标签中表示值的最佳/正确方法是什么?

javascript - 将命名函数传递给 Javascript 的高阶函数的正确方法是什么?

javascript - div 边框内的动画图像

javascript - 悬停时仅显示一个叠加层

javascript - css 中的动态或自适应类

Javascript 通过 AJAX 实现 Bootstrap Modal

javascript - 如何在mongodb中replaceRoot后进一步分组对象

javascript - 在移动设备上显示内容并在桌面上隐藏

javascript - 为什么 jQuery 的 event.which 在 Firefox 和 Chrome 中给出不同的结果?