前景介绍:
问题来自很早以前的一个面试题,修改构造函数return 的数据,这个构造函数的结果是什么?

//1.初始状态
function Person(obj){
    this.name = obj.name;
    this.age  = obj.age;
}
let person = new Person({
    name:"肖战",
    age :"30",
})
console.log(person);// Person { name: '肖战', age: 30 }
 
//2.修改return的值
function Person(obj){
    this.name = obj.name;
    this.age  = obj.age;
    return {
        name:"xiaobai"
    }
}
let person = new Person({
    name:"肖战",
    age :"30",
})
console.log(person);// Person { name: '肖战', age: 30 }
所有情况的总结在下图中,如果没有显示修改return的值,或者是return 的是简单出具类型和null的情况,返回的都是构造函数本身,如果返回的是复杂数据类型,数组/函数/对象,那该构造函数创建的实例对象就是return 的值 

image.png


芹丸子
40 声望4 粉丝

所有文章都是自己的学习记录,如果对你有帮助我很荣幸,如果文章记录之处有什么不对不好的地方还请指教