首页 > 其他 > 详细

typeof 是否正确判断类型? instanceof呢? instanceof 的实现原理是什么?

时间:2019-06-09 19:30:34      阅读:131      评论:0      收藏:0      [点我收藏+]

instanceof的实现代码:

// L instanceof R
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
    var O = R.prototype;// 取 R 的显式原型
    L = L.__proto__;    // 取 L 的隐式原型
    while (true) { 
        if (L === null) //已经找到顶层
            return false;  
        if (O === L)   //当 O 严格等于 L 时,返回 true
            return true; 
        L = L.__proto__;  //继续向上一层原型链查找
    } 
}

首先typeof 能够判断基本数据类型,但是除了null,typeof null 返回的是object

但是对于对象来说typeof不能准确判断类型,typeof 函数会返回function,除此之外全部都是object,不能准确判断类型

instanceof可以判断复杂数据类型,基本数据类型不可以

instanceof是通过原型链来判断的 ,A instanceof B,在A的原型链中层层查找,是否有原型等于B.prototype,如果一直找到A的原型链的顶端(null,即Object.prototype._proto_),仍然不等于B,那么返回false,否则返回true

typeof 是否正确判断类型? instanceof呢? instanceof 的实现原理是什么?

原文:https://www.cnblogs.com/nini123123/p/10994423.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!