-1

为什么这段代码不能按预期工作?有什么遗漏吗?

function User(name) {
    this.name = name;
};

var j = User('Jack');
alert(j.name)
4

2 回答 2

4

如果不使用new创建用户,this则表示全局对象窗口。 window.name在不同的浏览器中有所不同。

所以应该是new User("Jack");

于 2013-06-13T12:16:43.517 回答
2
function User(name) {
    this.name = name;
};

var j = new User('Jack');
alert(j.name)

您需要一个new关键字来User用作构造函数。没有它,thisinUser指的是全局对象(浏览器中的窗口),并且不会创建新对象。 j将是未定义的。

Usingnew创建了一个新对象,该对象分配给 j,this然后将其绑定到该对象。所以name将设置在新创建的对象上,而不是窗口上。

于 2013-06-13T12:15:31.280 回答