使用或不使用new关键字调用javascript函数有什么区别吗?例如,如果我有这个功能:
function computer(){
this.hardDrive = "big";
this.processor = "fast";
}
然后我以两种不同的方式称呼它:
var hp = computer();
var hp = new computer();
两个函数调用之间会有什么区别?
答案 0 :(得分:8)
如果没有new
,this
引用全局对象,而不是函数返回的任何对象。
如果您要执行代码,您会发现第一个hp
将是undefined
,而第二个[object Object]
将是hardDrive
。此外,由于显而易见的原因,第一个不具有processor
或window
的属性,但第二个属性。
在第一个示例中,您的两个属性已添加到{{1}}对象。
答案 1 :(得分:1)
第一个,不使用new
,将使用引用窗口对象的this
运行。第二个使用new
,将创建一个新的空对象,该对象将是函数中的this
。