JavaScript 代码示例:
function a() {
this.array1 = [];
this.addToArray = function(name) {
this.array1.push(new b(name));
return true;
}
this.searchForName = function(name) {
for(var i in this.array1) {
alert(i.name);
}
}
function b(name) {
this.name = name;
}
}
我将此 javascript 文件包含在 html 文档中。在 html 文档的脚本标签内我有以下代码:
var myObject = new a();
myObject.addToArray("test1");
myObject.searchForName("test1");
运行此代码,我希望弹出一个带有 "test1"
的警报,但它却弹出为未定义。然而,Chrome 中的调试器显示 myObject 内部有一个数组,其项目 0 的名称为 “test1”
。当我使用断点测试代码时,它显示在调用警报时,i.name 未定义。这有什么问题吗?
最佳答案
您正在寻找 name
属性 i
编号而不是成员 i
的this.array
.
所以:
i.name
应该是:
this.array1[i].name
结果是:
this.searchForName = function(name) {
for(var i in this.array1) {
// get it from this array1
alert(this.array1[i].name);
}
}
工作示例: http://jsfiddle.net/seNxD/
此外,使用 for-in
也不是一个好主意。如果您只对数字索引感兴趣,请声明。一个for
语句是要使用的语句,因为您没有枚举。
关于javascript - 搜索对象数组,对象的属性未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845273/