本机document.createElement()是愚蠢的(它只需要一个标签名称,没有属性).为什么我不能覆盖它?为什么这不起作用?
var originalFunction = document.createElement;
document.createElement = function(tag, attributes) {
var element = originalFunction(tag);
if (attributes) {
for (var attribute in attributes) {
element.setAttribute(attribute, attributes[attribute]);
}
}
return element;
};
Run Code Online (Sandbox Code Playgroud)
问题是当您尝试替换本机函数时浏览器会爆炸.由于document它不是JavaScript原语,因此您也无法为其创建原型.WTF.
小智 10
据我所知,问题是document.createElement()即使引用函数也必须来自文档.所以修改你的代码:
var element = originalFunction.call(document, tag);
Run Code Online (Sandbox Code Playgroud)