instanceof的判斷原理

2021-09-26 02:38:29 字數 1802 閱讀 6966

instanceof運算子的前面的,暫時稱為a;後面一般是乙個函式,暫時稱為b。

instanceof的判斷規則是:沿著a的__proto__這條線來找,同時沿著b的prototype這條線來找,如果能找到同乙個引用,返回true,否則返回false

那我們來按照這個規則乙個乙個來驗證上面的結果:

注意:每個函式都有乙個prototype屬性(原型),是乙個物件,每個物件都有乙個__proto__(隱式原型),指向它的建構函式的prototype(原型)(也是乙個物件),物件沒有prototype

第一步:fun1.__proto__=fun.prototype=

第二步:.__proto__=object.prototype=

object就是祖先了,萬物皆物件就是這意思,所以它沒有建構函式了,所以也就沒.__proto__了,結束

思如果再.__proto__會得到null,可以再控制台的console面板試試

第一步:fun.prototype=

是乙個物件,物件沒有prototype,結束

從上可以看出,在第一步a和b就找到同乙個引用,所以返回true

注意:因為prototype是乙個物件,所以它的__proro__就是object.prototype

第一步:fun1.__proto__=fun.prototype=

第二步:.__proto__=object.prototype=

object就是祖先了,所以它沒有建構函式了,所以也就沒.__proto__了,結束

第一步:function.prototype=

是乙個物件,沒有prototype,結束

可以看出fun1和fun始終沒有找到同乙個引用

第一步:fun1.__proto__=fun.prototype=

第二步:.__proto__=object.prototype=

object就是祖先了,所以它沒有建構函式了,所以也就沒.__proto__了,結束

第一步:object.prototype=

是乙個物件,沒有prototype,結束

從上可以看出,fun1和object最後找到了同乙個引用

instanceof判斷方法

a instanceof b 如果b函式的顯示原型物件在a物件的原型鏈上,返回true否則返回false a.proto proto.proto.和 b.prototype 的指向是否相同 function foo var f1 new foo console.log f1 instanceof f...

instanceof的原理用法

console.log person1 instanceof createperson true,判斷某個例項是否屬於某個類 let b new number 45 console.log b instanceof number true console.log 2 instanceof numbe...

java中的instanceof判斷

有的朋友遇到if判斷中的instanceof不知道什麼意思 eg 問題 public class shout class student extends shout class sample 答案 a instanceof b a是乙個物件 使用new例項的物件 b是乙個類 不是方法名 他表示a這個...