javascript - 有没有办法覆盖js对象属性检索?

标签 javascript

我需要自动分析函数并确定每个函数使用对象的哪些属性。

功能很简单,例如

(a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

输入对象的所有属性都是数字,并且函数不会更改输入对象

我的第一个想法是分析函数的字符串形式,但为了使其更加万无一失,如果我可以使用测试虚拟对象运行每个函数,动态地传递任何名称的请求属性并创建一个记下该名称。

例如,在vb.net中,您可以为类定义默认属性,以便可以根据键值动态处理每个对象(键)访问。 js中有类似的东西吗?

最佳答案

您可以使用proxies并将它们传递给函数,并记录调用了哪些属性:

const fn = (a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

var aProxy = new Proxy({}, {
  get: (obj, prop) => console.log(`${prop} was called on a`)
});

var bProxy = new Proxy({}, {
  get: (obj, prop) => console.log(`${prop} was called on b`)
});

fn(aProxy, bProxy);

关于javascript - 有没有办法覆盖js对象属性检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51663220/

相关文章:

javascript - 在 setState 中使用变量 - react

javascript - 我似乎无法使用react将这些方法传递给我的组件

javascript - this.state 在 react native 的 onPress 事件期间未定义

进度条上的Javascript引用错误,请帮忙

javascript - pdf.js : read file from another server

javascript - 使用 rails 4 从 mutilselect 中获取并保存所有项目

javascript - 我可以更改参数还是操作是静态的/"locked down"吗?

javascript - 如何禁用 jQuery.tablesorter 中的列排序?

javascript - 在 D3 投影上绘图

javascript - 如何在粘性菜单上只显示主菜单