在 JavaScript 中,理解物件關係和型別檢查對於有效程式設計至關重要。 instanceof和isPrototypeOf()這兩種方法有助於進行這些檢查。 雖然這兩種方法都用於確定 JavaScript 中的型別或原型關係,但它們的操作方式不同,適用於不同的場景。
下面我們將討論這兩個主題:
什麼是 instanceof?
JavaScript 中的 instanceof 運算子用於檢查物件是否屬於特定類或建構函式。 如果物件是指定類或建構函式的例項,則返回 true,否則返回 false。
特徵:
型別檢查:確定物件是否是特定類或建構函式的例項。
運算子:instanceof
使用方法:object instanceof Class
返回值:Boolean
應用:
在執行時檢查物件型別,
確保與預期的物件原型相容。
示例:該示例展示了 instanceof 運算子的使用:
class Vehicle { } class Car extends Vehicle { } let car = new Car(); console.log(car instanceof Car); console.log(car instanceof Vehicle); console.log(car instanceof Object);
輸出:
true true true
什麼是 isPrototypeOf()?
isPrototypeOf() 方法檢查另一個物件的原型鏈中是否存在某個物件。 如果指定物件在呼叫該方法的物件的原型鏈中,則返回 true,否則返回 false。
特性:
原型鏈檢查: 驗證一個物件是否存在於另一個物件的原型鏈中。
方法:isPrototypeOf()
使用方法:prototypeObject.isPrototypeOf(object)
返回:Boolean
應用:
驗證繼承關係。
檢查一個物件是否繼承了另一個物件的屬性和方法。
示例: 本例展示了 isPrototypeOf() 方法的使用:
function Animal() { } function Dog() { } Dog.prototype = Object.create(Animal.prototype); let dog = new Dog(); console.log(Animal.prototype.isPrototypeOf(dog)); console.log(Object.prototype.isPrototypeOf(dog)); console.log(Dog.prototype.isPrototypeOf(dog));
輸出:
true true true
instanceof 和 isPrototypeOf() 的區別:
特徵 |
instanceof |
isPrototypeOf() |
---|---|---|
型別檢查 |
檢查物件是否是特定類或建構函式的例項 |
檢查一個物件是否存在於另一個物件的原型鏈中 |
句法 |
The object instanceof Class |
The prototypeObject.isPrototypeOf(object) |
返回 |
boolean |
boolean |
用法 |
與類或建構函式一起使用 |
與原型物件一起使用 |
應用 |
執行時型別檢查確定物件型別 |
檢查原型鏈來驗證繼承關係 |