为什么这段代码不能按预期工作?有什么遗漏吗?
function User(name) {
this.name = name;
};
var j = User('Jack');
alert(j.name)
为什么这段代码不能按预期工作?有什么遗漏吗?
function User(name) {
this.name = name;
};
var j = User('Jack');
alert(j.name)
如果不使用new
创建用户,this
则表示全局对象窗口。
window.name
在不同的浏览器中有所不同。
所以应该是new User("Jack");
function User(name) {
this.name = name;
};
var j = new User('Jack');
alert(j.name)
您需要一个new
关键字来User
用作构造函数。没有它,this
inUser
指的是全局对象(浏览器中的窗口),并且不会创建新对象。 j
将是未定义的。
Usingnew
创建了一个新对象,该对象分配给 j,this
然后将其绑定到该对象。所以name
将设置在新创建的对象上,而不是窗口上。