js判断引用类型

新手上路,请多包涵

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

阅读 1.3k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题