JavaScript中的Object.prototype

时间:2010-11-18 01:51:29

标签: javascript internet-explorer prototype

我有一些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及以下版本中使用?

2 个答案:

答案 0 :(得分:6)

IE DOM元素不是普通的Javascript对象,也不像你期望的那样继承原型。

http://perfectionkills.com/whats-wrong-with-extending-the-dom/

答案 1 :(得分:1)

Object.prototype添加内容是真的糟糕的主意。它将被添加到每个对象中,这将导致意外行为,我保证。

只需定义您的功能并将其装饰到动态需要的任何对象上。