JS 构造函数的 return

338 阅读1分钟

默认情况下,没有return的函数的返回值为undefined(即没有定义返回值),如果定义了return,则返回指定对象。

但是构造函数比较t特殊,new构造函数在没有return的情况下默认返回新创建的对象。在有return的情况下,需要分为两个情况考虑:

  1. 如果返回值为基本数据类型(string,number,boolean,undefined,null),那么返回值为新建对象实例,即this。
var a = function S(){
  this.x=3;
  return 1;
}
var b = new a();
console.log(b); //{x:3}
  1. 如果返回值为一个非基本数据类型的对象,函数的返回值为指定的对象,this值所引用的对象被丢弃。
var a = function S(){
  this.x=3;
  return a;
}
var b = new a();
console.log(b); // S(){this.x=3;return a }