用Reflect和Proxy批量hook原生对象的属性、方法
发布于 5 年前 作者 xinggsf 5134 次预览 最后一次回复是 5 年前 来自 问答
Object.assign(HTMLScriptElement.prototype, new Proxy(HTMLScriptElement.prototype, {
appendChild(txt) {
const s = txt.toString();
const isHandle = rule instanceof RegExp ? rule.test(s) : s.includes(rule);
if (!isHandle) return rawAppend(txt);
if (cb) {
txt.textContent = cb(s);
//return rawAppend(txt);
}
},
set(target, key, value, receiver) {
if (key == 'src') {
const rule = rules.find(r => value.includes(r.rule));
if (rule) return rule.callback(value);
}
Reflect.set(target, key, value, receiver);
}
}));
代码如上,assign方法失败,有简便巧妙些的办法吗
1 回复
重新翻了一下文档,用Reflect.setPrototypeOf解决了