打印出警报中对象的值 window

Printing out a value from an object in an alert window

我正在尝试在警报中打印出人员对象的名称值 window。

        var person ={};
        person = {
            name: 'Tray',
            distance_travelled: 0,
            say_name: alert(this.name),
        }

        person.say_name;

我得到的结果是一个空的警告框。当我在名称中进行硬编码时,警告框会正确打印。我试过 say_name: alert(person.name),但是 returns 未定义。我做错了什么?

您需要为 say_name 分配一个函数。现在您正在立即调用该函数并为其分配 undefined return 值。这使得 this 指的是您所期望的以外的东西。

var person = {
    name: 'Tray',
    distance_travelled: 0,
    say_name: function() {
        alert(this.name);
    },
}

person.say_name();

现在 this arg 将引用 person 对象,因为当您执行 some_object.someMethod() 时,someMethod() 中的 this 的值会自动设置到调用它的some_object