Javascript新关键字用法

时间:2012-04-26 01:17:10

标签: javascript object new-operator

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

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

然后我以两种不同的方式称呼它:

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

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

2 个答案:

答案 0 :(得分:8)

如果没有newthis引用全局对象,而不是函数返回的任何对象。

如果您要执行代码,您会发现第一个hp将是undefined,而第二个[object Object]将是hardDrive。此外,由于显而易见的原因,第一个不具有processorwindow的属性,但第二个属性。

在第一个示例中,您的两个属性已添加到{{1}}对象。

答案 1 :(得分:1)

第一个,不使用new,将使用引用窗口对象的this运行。第二个使用new,将创建一个新的空对象,该对象将是函数中的this