更新時間:2023年08月31日14時10分 來源:傳智教育 瀏覽次數(shù):
instanceof和typeof是兩個用于檢查變量類型的JavaScript操作符,但它們有不同的用途和工作方式。
·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ù)等)的檢查。
·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 主要用于檢查自定義類的實例以及對象是否是某個類的子類。
·typeof 用于檢查基本數(shù)據(jù)類型和函數(shù)的類型,但對于自定義類的實例通常無法提供有用的信息。
·instanceof 用于檢查對象是否是特定類的實例,更適用于自定義類的類型檢查。
需要注意的是,typeof null返回 "object",這是JavaScript的歷史遺留問題,不應(yīng)該被視為null是對象的證據(jù)。此外,instanceof在處理跨窗口或跨幀的對象時可能會產(chǎn)生意外的結(jié)果,因為它檢查對象是否在特定的原型鏈上,而不僅僅是類的構(gòu)造函數(shù)。