JavaScript instanceof 運算符

一、概述

JavaScript 的 instanceof 運算符用於檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。

function Foo() {}
function Bar() {}

let foo = new Foo()

console.log(foo instanceof Foo) // true
console.log(foo instanceof Bar) // false

在上面的例子中,由於 foo 的原型鏈中出現了 Foo.prototype,因此 foo instanceof Foo 的結果是 true。

需要注意的是,instanceof 判斷的是實例的原型鏈上是否出現過該構造函數的 prototype 屬性,而不是判斷實例本身是否為該構造函數。

二、使用

instanceof 運算符通常用於判斷某個對象是否為某種類型。

function People(name, age) {
  this.name = name
  this.age = age
}

function Student(name, age, grade) {
  this.name = name
  this.age = age
  this.grade = grade
}

let john = new People('John', 20)
let mary = new Student('Mary', 18, '高中三年級')

console.log(john instanceof People) // true
console.log(mary instanceof Student) // true
console.log(mary instanceof People) // true

在上面的例子中,即使 Student 沒有明確繼承 People,但是由於 Student 的原型鏈中包含了 People.prototype,所以可以判斷 mary instanceof People 為 true。

三、注意事項

在使用 instanceof 運算符時,需要注意以下幾點:

1. instanceof 右側必須是一個函數。

2. instanceof 運算符不能正確判斷基本類型,因為基本類型不是對象。

console.log('hello' instanceof String) // false
console.log(123 instanceof Number) // false

3. instanceof 可能被修改,導致結果不是預期的。

function Foo() {}
function Bar() {}

Bar.prototype = new Foo()

let b = new Bar()

console.log(b instanceof Bar) // true
console.log(b instanceof Foo) // true

// 修改 Bar.prototype
Bar.prototype = {}

console.log(b instanceof Bar) // false
console.log(b instanceof Foo) // true,由於對象 b 的原型鏈沒有發生改變

四、總結

JavaScript 的 instanceof 運算符是一種用於判斷對象是否屬於某個類型的工具。它的判斷方式是檢測對象的原型鏈中是否出現了某個構造函數的 prototype 屬性。在使用過程中需要注意避免修改構造函數的 prototype,以及判斷基本類型時的局限性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/291821.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 14:08
下一篇 2024-12-25 14:08

相關推薦

  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python中賦值運算符和相等運算符解析

    Python是一種高級編程語言,它通常被用於開發 Web 應用程序、人工智能、數據分析和科學計算。在Python中,賦值運算符和相等運算符是非常常見和基本的運算符,它們也是進行編程…

    編程 2025-04-28
  • Python中的算數運算符優先級問題

    本文將從多個方面詳細闡述Python中算數運算符的優先級問題,並給出對應代碼示例。算數運算符的優先級指的是在混合運算時,Python自動根據一定的優先級順序決定哪一個運算符先進行。…

    編程 2025-04-28
  • 使用JavaScript日期函數掌握時間

    在本文中,我們將深入探討JavaScript日期函數,並且從多個視角介紹其應用方法和重要性。 一、日期的基本表示與獲取 在JavaScript中,使用Date對象來表示日期和時間,…

    編程 2025-04-28
  • JavaScript中使用new Date轉換為YYYYMMDD格式

    在JavaScript中,我們通常會使用Date對象來表示日期和時間。當我們需要在網站上顯示日期時,很多情況下需要將Date對象轉換成YYYYMMDD格式的字符串。下面我們來詳細了…

    編程 2025-04-27
  • Python比較運算符

    Python中的比較運算符有六個,分別是等於(==)、不等於(!=)、大於(>)、小於(<)、大於等於(>=)、小於等於(<=)。本篇文章將從以下幾個方面詳…

    編程 2025-04-27
  • Python邏輯運算符優先級

    本篇文章將從多個方面對Python邏輯運算符優先級進行詳細闡述,包括優先級規則、優先級示例及代碼實現等內容。 一、優先級規則 在Python中,邏輯運算符的優先級從高到低依次為“n…

    編程 2025-04-27
  • 異或Python:用異或運算符增強Python編程能力

    Python是一種高級編程語言,被廣泛應用於Web開發、數據分析等領域。Python提供了豐富的數據類型和函數庫,但在某些情況下,Python自帶的運算符可能不夠靈活,無法滿足程序…

    編程 2025-04-27
  • JavaScript中修改style屬性的方法和技巧

    一、基本概念和方法 style屬性是JavaScript中一個非常重要的屬性,它可以用來控制HTML元素的樣式,包括顏色、大小、字體等等。這裡介紹一些常用的方法: 1、通過Java…

    編程 2025-04-25

發表回復

登錄後才能評論