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

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

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

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

好口碑IT培訓(xùn)

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

  1.typeof操作符:

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

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

  示例代碼:

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

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

  2.instanceof 操作符:

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

  ·它需要兩個操作數(shù):要檢查的對象和要檢查的構(gòu)造函數(shù)。

  示例代碼:

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

const myDog = new Dog("Buddy");

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

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

  總結(jié):

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

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

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

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