切換語言為:簡體

JavaScript 中 instanceof 和 isPrototypeOf() 的區別

  • 爱糖宝
  • 2024-07-18
  • 2065
  • 0
  • 0

在 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

用法

與類或建構函式一起使用

與原型物件一起使用

應用

執行時型別檢查確定物件型別

檢查原型鏈來驗證繼承關係



0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.