乐趣区

关于前端:修改return-数据对构造函数创建对象的影响

前景介绍:
问题来自很早以前的一个面试题, 批改构造函数 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 的值 

退出移动版