Javascript 数组原型在chrome扩展中工作,但在firefox中给出TypeError
我在stackoverflow上找到了以下有用的代码片段: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
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是的,请参见编辑。