29.instanceof的原理
instanceof可以正確判斷對(duì)象的類型
用于判斷某個(gè)實(shí)例是否屬于某個(gè)構(gòu)造函數(shù)
在繼承關(guān)系中用來判斷一個(gè)實(shí)例是否屬于它的父類型或者祖先類型的實(shí)例尤莺;
實(shí)現(xiàn)原理是通過判斷實(shí)例對(duì)象的原型屬性proto和構(gòu)造函數(shù)或者父類的原型對(duì)象prototype是否相等今妄,循環(huán)遍歷位谋,相等則返回true;(簡(jiǎn)單的說就是只要左邊的變量原型鏈上有右邊變量的prototype屬性即可)
1)語法
var obj=new Object()
obj instanceof Object //true
2)底層原理
function myInstanceof(left, right) {
left = left.__proto__;
right = right.prototype;
while (true) {
if (left === null || left === undefined) {
return false
}
if (left === right) {
return true
}
//即上面均不滿足時(shí)褒搔,繼續(xù)往原型鏈上查找
left = left.__proto__;
}
}