【发布时间】:2017-10-04 13:14:22
【问题描述】:
我的目标是实现类似于 .NETs BindingList 的东西。首先我认为从 'BindingObject' 开始会更简单。
每当我的对象的属性更改/创建/删除时,我都想抛出一个事件或调用一个函数。最后,我希望能够动态地对对象的每个属性做出反应。
我已经阅读了几篇关于如何解决此问题的文章。使用 JavaScript 代理的大多数建议。
这是我现在尝试的:
var handler = {
get: function (target, propname) {
console.log('get');
return target[propname];
}};
BindingObject.prototype.constructor = new Proxy({}, handler);
function BindingObject(object) {
//access handler here
}
当然,我希望为每个创建的对象创建一个处理程序,而不是为每个对象创建一个相同的处理程序。我也很想在我也无法工作的构造函数中传递代理对象和处理程序。
这是我的第二次尝试,它允许在构造函数中传递我的对象,但我无法访问我的处理程序:
class BindingObject2 {
constructor(obj) {
this.handler = {
get: function (target, propname) {
console.log('get');
return target[propname];
}};
return new Proxy(obj || {}, this.handler);
}
}
【问题讨论】:
标签: javascript data-binding proxy handler