在对象字面量中,JavaScript中的"this"关键字是如何起作用的?

11 浏览
0 Comments

在对象字面量中,JavaScript中的"this"关键字是如何起作用的?

我看过如何使用函数内的"this"关键字?,但我觉得它没有解答以下问题。

给定以下代码:

var MyDate = function(date) {
    this.date = date;
};
var obj1 = {
    foo: new Date(),
    bar: new MyDate(this.foo)  //  this.foo is undefined
};
var obj2 = {};
obj2.foo = new Date();
obj2.bar = new MyDate(this.foo);  //  this.foo is undefined
var obj3 = {
    foo: new Date(),
    bar: new MyDate(obj3.foo)
};
var obj4 = {};
obj4.foo = new Date();
obj4.bar = new MyDate(obj4.foo);

为什么前两个尝试失败,但后两个成功?如果this不绑定到当前对象字面量,那它绑定到什么?

0