教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

instanceof與typeof()的區(qū)別?

更新時間:2023年08月31日14時10分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

  instanceof和typeof是兩個用于檢查變量類型的JavaScript操作符,但它們有不同的用途和工作方式。

  1.typeof操作符:

  ·typeof 用于檢查一個值的數據類型,返回一個字符串,表示該值的類型。

  ·它是一個一元操作符,后面跟一個要檢查類型的變量或表達式。

  示例代碼:

typeof 42; // 返回 "number"
typeof "Hello"; // 返回 "string"
typeof true; // 返回 "boolean"
typeof {}; // 返回 "object"
typeof []; // 返回 "object"(數組也被認為是對象)
typeof function() {}; // 返回 "function"

  typeof主要用于基本數據類型(如數字、字符串、布爾值、函數等)的檢查。

  2.instanceof 操作符:

  ·instanceof 用于檢查一個對象是否屬于某個特定的類(構造函數)或原型鏈上的類。

  ·它需要兩個操作數:要檢查的對象和要檢查的構造函數。

  示例代碼:

function Dog(name) {
  this.name = name;
}

const myDog = new Dog("Buddy");

myDog instanceof Dog; // 返回 true,因為myDog是Dog類的實例
myDog instanceof Object; // 返回 true,因為所有對象都是Object類的實例

  instanceof 主要用于檢查自定義類的實例以及對象是否是某個類的子類。

  總結:

  ·typeof 用于檢查基本數據類型和函數的類型,但對于自定義類的實例通常無法提供有用的信息。

  ·instanceof 用于檢查對象是否是特定類的實例,更適用于自定義類的類型檢查。

  需要注意的是,typeof null返回 "object",這是JavaScript的歷史遺留問題,不應該被視為null是對象的證據。此外,instanceof在處理跨窗口或跨幀的對象時可能會產生意外的結果,因為它檢查對象是否在特定的原型鏈上,而不僅僅是類的構造函數。

0 分享到:
和我們在線交談!