JS Constructors中的Return语句

时间:2010-05-30 14:11:11

标签: javascript constructor return

当JavaScript函数用作新对象的构造函数(带有'new'关键字)时,返回语句在JavaScript函数体中的作用是什么?

2 个答案:

答案 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