javascript - 代理不拦截对象
问题描述
我在这里有以下问题:
我尝试创建一个用于学习/实验目的的迷你框架。我有这个标记
<button click="cool">click me</button>
这是我绑定事件处理程序的自定义属性。我像这样收集它们:
document.querySelectorAll("[click]").forEach(listener => {
let name = listener.attributes.click.nodeValue;
listener.addEventListener(
"click",
this.staticProp[name].bind(this.staticProp)
);
});
一切都发生在一个班级里。我传递了我想要使其具有反应性的属性,如下所示:
new Tinyflow({
prog: "programm",
howDoesItWork: "good",
age: 21,
cool() {
console.log("nice");
console.log(this.age);
this.age++;
}
});
constructor(properties) {
this.reactivityHandler = {
set(vars, prop, newVal) {
console.log("i work");
},
get(data, prop, newVal) {
console.log("i work");
}
};
this.staticProp = properties;
this.passedProps = new Proxy(this.staticProp, this.reactivityHandler);
}
我希望reactivityHandler
每当我的道具发生变化时都会触发,但没有任何反应。在我的控制台中,我看到nice
以及如何age
增加,但我没有看到i work
。
为什么代理不拦截它?
解决方案
您设置this.passedProps
为Proxy
, 而您直接使用 访问属性this.age
。如果您希望它通过代理,则通过this.passedProps.age
和访问属性this.passedProps.age++
。
推荐阅读
- python-3.x - TypeError: __init__() 接受 1 到 6 个位置参数,但给出了 7 个
- google-sheets - 在谷歌表格中执行单元格功能
- hive - Hive - 没有枚举常量 org.apache.parquet.schema.OriginalType.s (state=,code=0)
- html - 仅使用 css 为占位符添加中断
- math - DAX:使用切片器动态更新计算的列值
- vue.js - nuxtjs/vuejs 中带有尾风类的动态类绑定
- qaf - 我是 QAF 的新手。我正在使用常用步骤来断言/验证文本
- google-cloud-platform - 允许 GCloud 服务帐号访问特定用户的 G Suite 帐号吗?
- html - 仅 CSS 网格列,不换行,并自动填充覆盖端间隙
- javascript - React父函数不接收子参数