理解JavaScript中的instanceof

2021-09-05 19:46:58 字數 1025 閱讀 2622

我們先寫這樣乙個例子

function girl(){} 

girl.prototype = {}

function boy(){}

boy.prototype ={}

var boy1 = new boy();

alert(boy1 instanceof boy);//true

alert(boy1 instanceof object);//true

boy.prototype = girl.prototype;

alert(boy1 instanceof boy);//false

alert(boy1 instanceof girl);//false

alert(boy1 instanceof object);//true;

var boy2= new boy();

alert(boy2 instanceof boy);//true

alert(boy2 instanceof girl);//true

alert(boy2 instanceof object);//true

boy.prototype = null;

var boy3 = new boy();

alert(boy3 instanceof girl);//false

alert(boy3 instanceof object);//true

alert(boy3 instanceof boy);//error

結論:

instanceof 檢測乙個物件a是不是另乙個物件b的例項的原理是:檢視物件b的prototype指向的物件是否在物件a的[[prototype]]鏈上。如果在,則返回true,如果不在則返回false。不過有乙個特殊的情況,當物件b的prototype為null將會報錯(類似於空指標異常)。

理解JavaScript中的原型物件(二)

組合使用建構函式模式和原型模式的好處 建構函式用於定義例項屬性,原型用於定義方法和共享的屬性,這樣的好處就是每個例項都有自己的乙份例項屬性的副本 同時又共享著對方法的引用 節省了記憶體 支援向建構函式傳遞引數。function student name,age,job student.prototy...

理解javascript中的「自動執行函式」

因為之前看了jquery的原始碼,對於原始碼中的一開始的 不是很理解,後來到網上查了查,有了大致的了解,怕忘記了,所以記錄一下。function a 1 上面的 就是乙個自動執行的 函式,和 中的一樣。其中的 function a 是乙個匿名函式,接受乙個引數。隨後的 1 表示對這個匿名函式的呼叫,...

JavaScript 特殊理解

js var data for var k 0 k 3 k console.log outer k data 0 3,而不是0 data 1 3,而不是1 data 2 3,而不是2 eval 和function構造不同 eval 可以干擾作用域鏈.而function 更安分守己些。不管你在 執行 ...