最近在改善自己手写的new方法
function myNew(fn) {
// let obj={};
let obj=Object.create(fn.prototype); //1,2步
let args=[...arguments].slice(1); //获取参数
let result=fn.call(obj,...args); //3
return typeof result==='object'||result instanceof Function? result:obj; //4
}
我在想这里判断引用类型可不可以直接 result instanceof Object ?
可以的在javascript中所有引用类型的原型链中都包含Object.prototype,所以
result instanceof Object
能对所有的引用类型返回true
你的这种写法当fn返回null时,会被错误的返回
return typeof result==='object'||result instanceof Function? result:obj;