我正在使用 customElements.define 注册一些自定义元素,并希望在成员访问器上自动设置陷阱,以便在事件更改时发出事件
class State extends HTMLElement {
public someValue = 1;
public constructor() {
super();
console.log('State constructor');
}
}
const oProxy = new Proxy(State, {
get(target, prop: string) {
console.log(`GET trap ${prop}`);
return Reflect.get(target, prop);
},
set(target, prop: string, value: any) {
console.log(`SET trap ${prop}`);
return Reflect.set(target, prop, value);
}
});
customElements.define('my-state', oProxy);
const oStateEl = document.querySelector('my-state');
console.log(oStateEl.someValue);
console.log(oStateEl.someValue = 2);
console.log(oStateEl.someValue);
我的浏览器似乎没有上述代码的问题,我可以看到一些陷阱输出,因为元素已设置
GET trap prototype
GET trap disabledFeatures
GET trap formAssociated
GET trap prototype
但是,当我手动获取/设置值时,陷阱不会被触发。这有可能吗?
慕尼黑的夜晚无繁华
相关分类