使用或不使用 new 关键字调用 JavaScript 函数是否有区别?例如,如果我有以下函数:
function computer(){
this.hardDrive = "big";
this.processor = "fast";
}
我接下来会以两种不同的方式调用它:
var hp = computer();
var hp = new computer();
这两个函数调用有什么区别?
使用或不使用 new 关键字调用 JavaScript 函数是否有区别?例如,如果我有以下函数:
function computer(){
this.hardDrive = "big";
this.processor = "fast";
}
我接下来会以两种不同的方式调用它:
var hp = computer();
var hp = new computer();
没有使用new
关键字时,this
指向全局对象,而不是从函数返回的任何对象。
如果您执行代码,您会发现第一个hp
将是undefined
,而第二个将是[object Object]
。此外,由于明显的原因,第一个不会有hardDrive
或processor
属性,但第二个会有。
在第一个示例中,您的两个属性将被添加到window
对象中。
new
),this
不就是全局对象 window
吗?执行该函数会将 hardDrive
和 processor
添加到全局对象中,对吧? - Josephnew
,将会以 this
指向窗口对象运行。第二个使用 new
,将创建一个新的空对象,并且该对象将成为函数内部的 this
。