首页 > 解决方案 > 事先不知道属性的 Javascript 属性函数

问题描述

我有一个简单的对象:

let test = {}

然后我添加属性:

test.a = document.getElementById("element")

我试图弄清楚,如果可能的话,如何在不事先知道属性的情况下为每个属性添加默认函数。

例如,我想像这样绑定多个事件监听器:

test.a.addMultipleEventListeners(args)

如果为每个属性自动创建函数是可能的,那么它将在我正在处理的项目中形成一个很好的模式。

我是否在这里偏离了基地或遗漏了一些明显的东西?

感谢您的任何建议:)

标签: javascript

解决方案


您可以使用 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>


推荐阅读