请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

instanceof中是否需要对null 和 undefined做处理

正在回答 回答被采纳积分+3

1回答

火星飞鸟 2021-10-28 16:12:09

原型链的顶端是null,判断implicitPrototype===null即可

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仰5306339 #1
    我的意思是,用我们的instanceof方法
    const result = instance_of(null,Object) 是报错的 
    但是如果是null instanceof Object 是返回 false
    回复 有任何疑惑可以回复我~ 2021-10-28 16:16:10
  • 火星飞鸟 回复 提问者 慕仰5306339 #2
    let implicitPrototype = obj?.__proto__;即可,obj后面加个'?',若传入null或者undefined,则implicitPrototype就会得到undefined,我的写法:
    function myInstanceof(obj, constructor) {
        let implicitPrototype = obj?.__proto__;
        const displayPrototype = constructor.prototype;
        while (implicitPrototype) {
            if (implicitPrototype === displayPrototype) return true;
            implicitPrototype = implicitPrototype.__proto__;
        }
        return false;
    }
    
    如果是老师的写法,这样改:let implicitPrototype = obj ? obj.__proto__ : null;
    回复 有任何疑惑可以回复我~ 2021-10-28 16:27:56
  • 提问者 慕仰5306339 回复 火星飞鸟 #3
    好的 谢谢老师
    回复 有任何疑惑可以回复我~ 2021-10-29 13:34:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信