我想创建一个可以在元素上使用的新函数,如:
document.getElementById("element").myNewFunction();
我不是在谈论这个:
document.getElementById("element").myNewFunction = function(){
doSomething...
}
因为这仅适用于该元素,但是我应该如何创建全局函数,我可以在所有元素上使用它们,例如JavaScript内置的元素?
答案 0 :(得分:9)
使用Element的原型来扩展其功能:
Element.prototype.myNewFunction = function() {
// your code...
};
现在您可以在任何元素对象上调用此方法。
编辑:我刚刚进行了快速检查,看来这对IE7及以下版本无效,IE8可能不合适。
编辑2:同样,Eli指出,扩展您不拥有的对象可能不是最佳做法。鉴于这种不稳定的IE支持,您可能需要考虑一个简单的过程函数:
function myFunction(element) {
// your code...
// which may or may not return an object or value
return blah;
}
答案 1 :(得分:5)
请参阅此问题:In Javascript, can you extend the DOM?。
虽然可以这样做,但通常认为改变你不拥有的对象的功能是不好的做法。
答案 2 :(得分:1)
Prototype(库)执行此操作,通过向其原型添加方法来扩展本机(内置)DomElement类。它在旧IE中不起作用,所以我建议反对它。
答案 3 :(得分:1)
尝试
Object.prototype.myNeweFunction=function(){
doSomthing..
}
答案 4 :(得分:1)
例如:
HTMLAnchorElement.prototype.click = function () {
alert('HAI!');
};
document.links[0].click();
通过查询document.getElementById("element").constructor