3

使用或不使用 new 关键字调用 javascript 函数有区别吗?例如,如果我有这个功能:

function computer(){
  this.hardDrive = "big";
  this.processor = "fast";
}

然后我以两种不同的方式调用它:

var hp = computer();
var hp = new computer();

两个函数调用之间有什么区别?

4

2 回答 2

8

没有new,this指的是全局对象,而不是函数返回的任何对象。

如果你要执行你的代码,你会发现第一个hpundefined,而第二个是[object Object]。此外,由于显而易见的原因,第一个不具有hardDriveor的属性processor,但第二个具有。

在第一个示例中,您的两个属性将被添加到window对象中。

于 2012-04-26T01:19:48.010 回答
1

第一个,不是 using new,将在this引用 window 对象的情况下运行。第二个, using new,将创建一个新的空对象,该对象将是this函数内。

于 2012-04-26T01:20:54.873 回答