Fuz*_*yma 6 javascript dom dynamic-proxy
我编写了一个薄包装器,它传递了创建的节点document.createElement并添加了一些方法。这个包装器是用代理实现的。我所做的就是抓住一些吸气剂。
return new Proxy(node, {
get (target, prop) {
if (prop === 'node') return target
if (wFuncs[prop]) {
return Reflect.get(target, wFuncs[prop]).bind(target)
}
return Reflect.get(target, prop)
}
})
Run Code Online (Sandbox Code Playgroud)
我本来希望能够传递这样的代理,appendChild因为它仍然是 html 元素的实例Node,并且具有 html 元素的所有属性和方法。然而,appendChild 抱怨传递的元素不是 Node:
TypeError:无法在“Node”上执行“appendChild”:参数 1 不是“Node”类型
关于如何解决这个问题有什么想法吗?
小智 0
我们可以重新声明全局appendChild行为。像这样:
__element属性,返回真实节点return new Proxy(node, {
get (target, prop) {
if (prop === 'node') return target
if (prop === '__element') return node
if (wFuncs[prop]) {
return Reflect.get(target, wFuncs[prop]).bind(target)
}
return Reflect.get(target, prop)
}
});
Run Code Online (Sandbox Code Playgroud)
Node.prototype.appendChild = function (el) {
if (el["__element"]) {
return _appendChild.call(this, el["__element"]);
} else {
return _appendChild.call(this, el);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |