javascript - 事先不知道属性的 Javascript 属性函数
问题描述
我有一个简单的对象:
let test = {}
然后我添加属性:
test.a = document.getElementById("element")
我试图弄清楚,如果可能的话,如何在不事先知道属性的情况下为每个属性添加默认函数。
例如,我想像这样绑定多个事件监听器:
test.a.addMultipleEventListeners(args)
如果为每个属性自动创建函数是可能的,那么它将在我正在处理的项目中形成一个很好的模式。
我是否在这里偏离了基地或遗漏了一些明显的东西?
感谢您的任何建议:)
解决方案
您可以使用 aProxy
来处理设置的所有属性。
const obj = new Proxy(Object.create(null), {
set(obj, prop, value) {
value.addMultipleEventListeners =
(events, fn)=>events.forEach(event=>value.addEventListener(event,fn));
return Reflect.set(...arguments);
}
});
obj.a = document.querySelector('#a');
obj.a.addMultipleEventListeners(['mousedown', 'mouseover'], e=>console.log(e.type));
<div id="a" style="border: 1px solid red; text-align: center;">Click or hover over me!</div>
推荐阅读
- apache-nifi - 是否有用于查询 Active Directory 的 Nifi 处理器?
- java - Java,设置按钮的颜色而不是macOS上的边框?
- swift - 在 Swift 中使用 NumberFormatter 拼出货币金额的小数部分
- python - scikit-learn 的 GaussianMixture 聚类算法中的 weights_init 参数是如何使用的?
- r - 用于计算从原点到凸包的距离的 R 包
- reactjs - 如何使用打字稿和自定义样式的定义使用 react-select 进行选择
- mysql - mysql - 特性 `diesel::Expression` 没有为`f64` 实现
- django - Django - 一个模型分为两种形式,我如何将两者与 ID 联系起来?
- javascript - 你如何在 discord.js 中存储用户输入?
- ansible - 在 Ansible 中解析 JSON 输出以在嵌套显示中显示信息