如果函数返回 return {},return null,return undefined,return 1,return true,return Symbol()会发生什么
代码实验
console.table([null,undefined,1,true,Symbol(),{a:1},[1,2]]
.map((item)=>[item,function(){return item}])
.map(([res,myConstructor])=>[Object.prototype.toString.call(res),res,new myConstructor()])
)

模拟构造函数实现
function Person(name){
this.name=name
}
Person.prototype.say=function(){
console.log(`my name is ${this.name}`)
}
const person=new Person('张三')
person.say()
function myNew(fn,...args){
const obj={}
obj.__proto__=fn.prototype
const res=fn.apply(obj,args)
return typeof res ==='object' ? res :obj
}
const persons=myNew(Person,'李四')
persons.say()
结论
面试攻略