构造函数的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的新对象

 

posted @ 2022-01-05 21:15  keyeking  阅读(174)  评论(0编辑  收藏  举报