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這個...