javascript - 搜索对象数组,对象的属性未定义?

标签 javascript arrays object properties dynamic-arrays

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编号而不是成员 ithis.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/

相关文章:

javascript - Number 与 new Number 内部实现

JavaScript 错误 : Cannot Convert Object to Primitive Value

c - 希望文件中的每个单词都列在数组中

python - 从 DataFrame 到嵌套的 Json 对象

java - 迭代时如何处理数组中的 null

javascript表格填写不同的方式

objective-c - 从 C 代码转换为 ObjC

javascript - jQuery 不显示表单字段

javascript - 无法让 JQuery 附加一些 html 和值

javascript - 如何将结构添加到作为数据库查询结果创建的对象