NoConflict()模式下的Jquery + Prototype,Array.prototype.indexOf已损坏

时间:2009-10-18 15:43:24

标签: prototypejs jquery

我正在尝试这个jquery插件http://plugins.jquery.com/project/stylish-select-box/

它运行良好,但在noConflict模式下使用prototype + jquery 这个功能破坏了其他脚本

Array.prototype.indexOf = function (obj, start) {
        for (var i = (start || 0); i < this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
    };

任何帮助?

2 个答案:

答案 0 :(得分:1)

请参阅https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/indexOf

Array已经有一个本机indexOf方法。以不会产生相同结果的方式更改它会破坏事物。哎呀,即使尝试替换原生方法也可能会导致hasOwnProperty等方法出现问题。

如果您真的想要该功能,请将其重命名为myIndexOf或其他内容,以避免冲突。

答案 1 :(得分:0)

1.6之前的Javascript版本没有实现indexOf(即IE6)。但是,您可以轻松检查indexOf是否已实现:

if (!Array.prototype.indexOf)
{
    Array.prototype.indexOf = function(obj, start) {
        //
    }
}