【发布时间】:2010-02-27 03:14:09
【问题描述】:
原生的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;
};
问题在于,当您尝试替换本机功能时,浏览器会崩溃。由于document 不是JavaScript 原语,因此您也无法为其创建原型。见鬼。
【问题讨论】:
-
我认为
document.createElement(..)也不太重视你。 -
为什么不直接创建和使用自己的函数而不是覆盖原生函数?
-
@KennethJ 因为有些人仍然尝试创建标准化库或尝试在 DOM 上创建元素时执行验证代码,而无需创建命名空间和其他东西。
标签: javascript dom