对象方法不会在for循环中运行

时间:2017-02-05 18:06:55

标签: javascript object for-loop netbeans methods

在这段代码中,我创建了一个对象数组,并尝试遍历它们,在每个对象上调用一个方法。该方法是对象原型的一部分。

以下是设置:

function TestObj(name) {
    this.name = name;
}

TestObj.prototype.speak = function() {
    console.log(this.name);
};

var myArray = [
    new TestObj('first'),
    new TestObj('second')
];

我知道我可以正确访问该方法,因为这样可以提供正确的输出:

myArray[0].speak(); // displays "first"

但是,我试过的两个循环都不会输出任何内容:

for (var i = 0; i < myArray.length; i++) {
    myArray[i].speak();
}

for (var key in myArray) {
    key.speak();
}

1 个答案:

答案 0 :(得分:1)

我的第二个循环key.speak();myArray[key].speak();

for (var key in myArray) {
   myArray[key].speak();
}

&#13;
&#13;
function TestObj(name) {
    this.name = name;
}

TestObj.prototype.speak = function() {
    console.log(this.name);
};

var myArray = [
    new TestObj('first'),
    new TestObj('second')
];
for (var i = 0; i < myArray.length; i++) {
    myArray[i].speak();
}

for (var key in myArray) {
    myArray[key].speak(); /*change here in your code*/
}
&#13;
&#13;
&#13;