构造函数的return
看下面的普通函数执行
基本类型值
function fun() { var a = 1; var b = 2; return a + b; } console.log(fun())
页面中返回的就是3,此时如果是引用了类型值呢?
function fun() { return { a: 1, b: 2 } } console.log(fun())
从上面代码我们发现普通函数的return就代表函数的返回,return什么就返回什么
我们再看构造函数的执行
先看基本类型值
function Fun(name,age,sex) { this.name = name; this.age = age; this.sex = sex; return 0 } var obj = new Fun("小明", 18, "男") console.log(obj)
你会发现基本类型值返回的就是一个空对象,而不是a+b的计算结果
再看引用类型值
function Fun(name,age,sex) { this.name = name; this.age = age; this.sex = sex; return { a: 1, b: 2 }; } var sum = new Fun("小明", 18, "男") console.log(sum)
引用类型值,返回的是该对象
当一个构造函数有return的时候,如果这个return是引用类型值,此时就不返回new的对象了(四步走创建的新对象),如果它return的是基本类型值,则忽略这个基本类型值,返回new的新对象