为什么我无法读取传递给函数的对象的属性?在JavaScript中

3 javascript properties object

我在函数getOlder()中遇到下一个错误:
TypeError:无法读取未定义的属性'age'

有什么问题以及如何解决?

function person(name, age) {
    this.name=name;
    this.age=age
}

// Returns the older person in a group of persons.
var getOlder = function(people) {
    if (people.length === 0) {
        return new person();
    }

    var older = people[0]; // The first one is the older for now.

    var value;
    for (var _ in people) {
        value = people[_];
        if (value.age > older.age) {
            older = value;
        }
    }
    return older;
};

// Declare some persons.
var paul = new person("Paul", 23);
var jim = new person("Jim", 24);
var sam = new person("Sam", 84);
var rob = new person("Rob", 54);
var karl = new person("Karl", 19);

var older = getOlder(paul, jim);
if (older.name !== "Jim") {
    console.log("Fail");
}
Run Code Online (Sandbox Code Playgroud)

pim*_*vdb 5

看看你的功能的签名:

var getOlder = function(people) {
Run Code Online (Sandbox Code Playgroud)

您没有创建函数,因此它接受两个人对象.你显然只接受一个数组,因为你正在使用people.lengthpeople[0]在函数内部.所以你还必须传递一个数组:

var older = getOlder([paul, jim]);
Run Code Online (Sandbox Code Playgroud)