[英]Object.prototype in JavaScript
我有一些JavaScript代碼,定義了以下函數getElementsByAttribute
:
Object.prototype.getElementsByAttribute = function(attr) {
var children = this.all || this.getElementsByTagName('*'),
ret = [], i, c;
for( i=0; i<children.length; i++) {
c = children[i].getAttribute(attr);
if( typeof c == "string" && c != "")
ret.push(children[i]);
}
return ret;
}
這適用於我測試過的所有瀏覽器,但Internet Explorer 7(可能更低)除外-這些瀏覽器拋出“對象不支持此屬性或方法”。
我唯一能想到的是,我定義原型函數時就已經創建了對象……
將函數定義為...好吧,一個“普通”函數並將元素作為參數傳遞,這有什么辦法,在IE7及更低版本中有什么方法可以實現?
IE DOM元素不是普通的Javascript對象,並且不會像您期望的那樣繼承原型。
http://perfectionkills.com/whats-wrong-with-extending-the-dom/
將事物添加到Object.prototype
是一個非常糟糕的主意。 它將被添加到每個對象,這將導致意外的行為,我保證。
只需定義函數並將其裝飾到動態需要的任何對象上即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.