当JavaScript函数用作新对象的构造函数(带有'new'关键字)时,返回语句在JavaScript函数体中的作用是什么?
答案 0 :(得分:21)
通常return
只是退出构造函数。但是,如果返回的值是Object,则将其用作new
表达式的值。
考虑:
function f() {
this.x = 1;
return;
}
alert((new f()).x);
显示1,但
function f() {
this.x = 1;
return { x: 2};
}
alert((new f()).x);
显示2。
答案 1 :(得分:2)
使用new
运算符的原因是为了确保构造函数中的this
引用 new 上下文,它支持:
this.functionName = function(){...};
,并允许使用instanceof
运算符:
function foo() {...}
var bar = new foo();
alert(bar instanceof foo);
在这样的构造函数中使用return {...}
否定了这两种效果,因为这样的模式不需要this
,而instanceof
将返回false
。