js instanceof 与 typeof的区别,实现 instanceof
Post on 2021-10-27
91
0
instanceof 与 typeof的区别
instanceof
可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype
console.log([] instanceof Array) //true
console.log([] instanceof Object) //true
//只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型
typeof
是判断参数是什么类型的实例,返回值为说明运算数类型的字符串。
返回值结果:“number”、“string”、“boolean”、“object”、“function”、“undefined”
- typeof对于原始类型来说,除了null都可以显示正确类型
- typeof对于对象来说,除了函数都会显示object
实现instanceof
function instanceofs(left,right){
if(left == null||left == undefined){
return false
}
let prototype = right.prototype
left = left.__proto__
while(true){
if(left == null){
return false
}
if(left == prototype ){
return true
}
left = left.__proto__
}
}
//测试
console.log([] instanceof Array) //true
console.log(instanceofs([],Array)) //true
console.log([] instanceof Function) //false
console.log(instanceofs([],Function)) //false
暂无评论