为什么这段代码不能按预期工作?有什么遗漏吗?
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用作构造函数。没有它,thisinUser指的是全局对象(浏览器中的窗口),并且不会创建新对象。 j将是未定义的。
Usingnew创建了一个新对象,该对象分配给 j,this然后将其绑定到该对象。所以name将设置在新创建的对象上,而不是窗口上。