Javascript:分配给对象或数组原型会导致括号不起作用
Javascript: Assigning to Object or Array Prototype Causes Brackets to Not Work
可能的重复项:
将函数添加到 javascript 的 Array 类分隔符中 for loops
在任何人说什么之前,我知道使用 Object.prototype 分配一些东西通常是不好的做法,但如果包含此代码块,我希望所有对象都具有这种东西。奇怪的是,当我使用 Array 时也会发生这种情况。这是在 Node.js 中进行的,所以它是在 V8 javascript 引擎中发生的。无论如何,这是怎么回事。我只是为这两种类型之一的原型分配一个函数(我已经单独尝试了这两种类型,但错误与结果相同,当我使用其他类型的类型时不会发生这种情况)。
Array.prototype.test = function() { console.log("test"); }
var a = ["test1", "test2", "test3"],
index,
entry;
a.test(); //prints 'test'
for(index in a) {
entry = (a[index]).split("e"); //throws an error
}
错误是
Object Function () {console.log("test");} has no method 'split'
思潮?
如果你运行这个,你会看到发生了什么,因为你在数组上使用原型,该函数成为对象的一部分,并拆分抛出错误。
Array.prototype.test = function() { console.log("test"); }
var a = ["test1", "test2", "test3"],
index,
entry;
a.test(); //prints 'test'
for(index in a) {
console.log(index);
console.log(a);
// entry = (a[index]).split("e"); //throws an error
}
你应该用以下命令迭代该数组:
for(index=0;index<a.length;index++)
因为当您添加成员时,它们将成为数组的一部分,因此使用
for(i in a) console.log(i);
这将打印所有键以及函数名称"test"
尝试
varTest = console.log("test");
Array.prototype.test = function() { varTest }
var a = ["test1", "test2", "test3"],
index,
entry;
a.test(); //prints 'test'
for(index in a) {
entry = (a[index]).split("e"); //throws an error
}
相关文章:
- Magento Jquery引导程序和原型冲突?导航标签不起作用
- 对象原型在Canvas Game中不起作用
- JavaScript - 为什么设置原型原型不起作用
- Javascript:分配给对象或数组原型会导致括号不起作用
- 修改对象的原型不起作用
- 将js文件从原型迁移到jQuery不起作用
- 原型扩展jQuery在Internet Explorer中不起作用 - “不支持”
- 为什么原型JavaScript在这种情况下不起作用
- Javascript原型继承不起作用
- 通过原型扩展数学对象不起作用
- 原型函数在IE8中不起作用
- 在主干中向原型对象添加值不起作用
- 通过按钮点击调用原型函数不起作用
- 调用函数内部的原型方法不起作用
- javascript原型更改锚点颜色不起作用
- 为什么功能原型在这个小提琴里不起作用
- 多个元素原型不起作用
- 重写对象's构造函数's原型没有;不起作用
- 为什么对Array原型的更改在我的jQuery插件中不起作用
- 从父对象调用原型方法不起作用