Javascript函数无法创建新的Object

时间:2013-06-13 12:14:23

标签: javascript

为什么此代码无法按预期工作?什么遗失了?

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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

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

使用new创建一个分配给j的新对象,然后将this绑定到该对象。因此,name将设置在新创建的对象上,而不是窗口上。