Javascript 数组原型在chrome扩展中工作,但在firefox中给出TypeError

Javascript 数组原型在chrome扩展中工作,但在firefox中给出TypeError,javascript,google-chrome,firefox-addon-sdk,Javascript,Google Chrome,Firefox Addon Sdk,我在stackoverflow上找到了以下有用的代码片段: Array.prototype.clean = function(deleteValue) { for (var i = 0; i < this.length; i++) { if (this[i] == deleteValue) { this.splice(i, 1); i--; } } return thi

我在stackoverflow上找到了以下有用的代码片段:

Array.prototype.clean = function(deleteValue) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == deleteValue) {         
            this.splice(i, 1);
            i--;
        }
    }
    return this;
};
这在chrome中运行良好,但在firefox中我得到一个类型错误:

TypeError: foo.concat(...).clean is not a function
有什么建议吗?有什么问题吗

//编辑//

foo和bar是数组,foo来自json,其解析如下:

foobar = foo.concat(bar).clean('').toString();
var json = {property: 'a,b,c,d,e,f,g'};
json = json.property.split(',');
function digestTextField (string) {
    // takes string of format "a, b , c", trims spaces, converts to lower case
    var rawText = document.getElementById(string + 'Events').value,
        digestedText = rawText.split(','),
        i;

    for (i = 0; i < digestedText.length; i += 1) {
        digestedText[i] = digestedText[i].toLowerCase()
                            .replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    }
    return digestedText;
}
从一个文本区域中提取条,如下所示:

foobar = foo.concat(bar).clean('').toString();
var json = {property: 'a,b,c,d,e,f,g'};
json = json.property.split(',');
function digestTextField (string) {
    // takes string of format "a, b , c", trims spaces, converts to lower case
    var rawText = document.getElementById(string + 'Events').value,
        digestedText = rawText.split(','),
        i;

    for (i = 0; i < digestedText.length; i += 1) {
        digestedText[i] = digestedText[i].toLowerCase()
                            .replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    }
    return digestedText;
}
函数摘要文本字段(字符串){
//接受格式为“a,b,c”的字符串,修剪空格,转换为小写
var rawText=document.getElementById(字符串+Events')。值,
digestedText=rawText.split(','),
我
对于(i=0;i

在调用.clean(“”)之前,这两个文件都会保存到simpleStorage并从simpleStorage中读取。

发布的代码中没有问题,也许您可以在调用后将clean添加到prototype中?以下内容适用于xul应用程序:

function jsdump(str) {
  Components.classes['@mozilla.org/consoleservice;1']
            .getService(Components.interfaces.nsIConsoleService)
            .logStringMessage(str);
}
Array.prototype.clean = function(deleteValue) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == deleteValue) {         
            this.splice(i, 1);
            i--;
        }
    }
    return this;
};
var foo = {property: 'a,b'};
foo = foo.property.split(',');
var bar="5,6,,7,".split(",");

jsdump("Array has clean:"+Array.prototype.hasOwnProperty("clean"));
jsdump("is foo an array:"+(foo instanceof Array));
jsdump("is bar an array:"+(bar instanceof Array));
jsdump(foo.concat(bar).clean('').toString());
以以下方式启动应用程序:

firefox --app application.ini -jsconsole

什么是foo和bar?我相信它们是数组,你能说明foo和bar的初始化代码吗?@prasun是的,请参见编辑。