instanceof用途
简单数据类型:String、Number、Boolean、undefined、nulll 复杂数据类型:Object(除了简单数据类型以外,复杂数据类型都为Object)
判断简单数据类型使用typeof:返回数据类型
let str = '张三'console.log(typeof str) // stringconsole.log(typeof null) // object
判断复杂数据类型使用instanceof:返回boolean值
let arr = [1,2,3]console.log(arr instanceof Array) // trueconsole.log(arr instanceof Object) // trueconsole.log(null instanceof Object) // false
instanceof原理
instanceof的原理是原型链, javascript的原型链的原理是链表实现的
原理:判断当前目标值是否等于检测的数据类型的原型prototype,如果不等于,就沿着当前目标值的原型链proto依次向上找,直到值为null返回false,否则返回true
代码:
const instanceofs = (target,obj)=>{let p = target;while( p ){if( p == obj.prototype ){return true;}p = p.__proto__;}return false;}console.log( instanceofs( [1,2,3] , Object ) )
