簡體   English   中英

JavaScript中的Object.prototype

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM