js判断引用类型

无幻
  • 5
新手上路,请多包涵

最近在改善自己手写的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 ?

回复
阅读 127
1 个回答

可以的在javascript中所有引用类型的原型链中都包含Object.prototype,所以 result instanceof Object
能对所有的引用类型返回true
你的这种写法当fn返回null时,会被错误的返回
return typeof result==='object'||result instanceof Function? result:obj;

你知道吗?

宣传栏