为什么此代码无法按预期工作?什么遗失了?
function User(name) {
this.name = name;
};
var j = User('Jack');
alert(j.name)
答案 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
将设置在新创建的对象上,而不是窗口上。