欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)據(jù)類型判斷之Object.prototype.toString.call() 的詳解(示例)

 更新時間:2024年11月25日 12:00:45   作者:guokanglun  
`Object.prototype.toString.call()`是JavaScript中判斷數(shù)據(jù)類型的強大方法,可以精確區(qū)分所有內置類型,包括原始類型和對象類型,適用于跨環(huán)境檢測和區(qū)分自定義類實例,感興趣的朋友跟隨小編一起看看吧

Object.prototype.toString.call() 的詳解

Object.prototype.toString.call() 是 JavaScript 中判斷數(shù)據(jù)類型的強大方法。它可以精確區(qū)分所有的 JavaScript 內置類型,包括原始類型和對象類型。

語法

Object.prototype.toString.call(value)
  • value 是要檢測類型的變量。
  • 返回結果是一個類似 "[object Type]" 的字符串,其中 Type 是該變量的類型名稱。

為什么使用它?

  • 準確性:它可以區(qū)分 nullundefined,以及各種內置對象(如 Array、Date 等)。
  • 通用性:不依賴環(huán)境或原型鏈,可以用于跨環(huán)境的類型判斷。

返回值

以下是常見數(shù)據(jù)類型及其對應的返回值:

數(shù)據(jù)類型返回值
Number[object Number]
String[object String]
Boolean[object Boolean]
Undefined[object Undefined]
Null[object Null]
Array[object Array]
Object[object Object]
Function[object Function]
Date[object Date]
RegExp[object RegExp]
Error[object Error]
Symbol[object Symbol]
Map[object Map]
Set[object Set]
WeakMap[object WeakMap]
WeakSet[object WeakSet]
BigInt[object BigInt]
自定義類實例[object Object]

示例

// 基本類型
console.log(Object.prototype.toString.call(123)); // [object Number]
console.log(Object.prototype.toString.call("hello")); // [object String]
console.log(Object.prototype.toString.call(true)); // [object Boolean]
console.log(Object.prototype.toString.call(undefined)); // [object Undefined]
console.log(Object.prototype.toString.call(null)); // [object Null]
// 對象類型
console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call({})); // [object Object]
console.log(Object.prototype.toString.call(function() {})); // [object Function]
console.log(Object.prototype.toString.call(new Date())); // [object Date]
console.log(Object.prototype.toString.call(/abc/)); // [object RegExp]
// 特殊對象
console.log(Object.prototype.toString.call(new Map())); // [object Map]
console.log(Object.prototype.toString.call(new Set())); // [object Set]
console.log(Object.prototype.toString.call(Symbol())); // [object Symbol]
console.log(Object.prototype.toString.call(BigInt(123))); // [object BigInt]

適用場景

區(qū)分 nullobject

console.log(typeof null); // "object" (誤導性結果)
console.log(Object.prototype.toString.call(null)); // [object Null]

區(qū)分對象類型:

console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call({})); // [object Object]

跨環(huán)境檢測
在不同的 JavaScript 環(huán)境中(如瀏覽器和 Node.js),使用 instanceof 有時可能會失敗,而 Object.prototype.toString.call() 是可靠的。

封裝為通用函數(shù)

可以封裝為一個類型檢測工具:

function getType(value) {
  return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}
console.log(getType(123)); // "number"
console.log(getType(null)); // "null"
console.log(getType([])); // "array"
console.log(getType(new Map())); // "map"
console.log(getType(() => {})); // "function"

注意事項

自定義類實例(非內置對象)都會返回 [object Object],如果需要區(qū)分,可以結合 constructor.name

class MyClass {}
const instance = new MyClass();
console.log(Object.prototype.toString.call(instance)); // [object Object]
console.log(instance.constructor.name); // MyClass

無法檢測用戶定義的 Symbol.toStringTag 修改:

const obj = { [Symbol.toStringTag]: "CustomTag" };
console.log(Object.prototype.toString.call(obj)); // [object CustomTag]

Object.prototype.toString.call() 是一種強大的數(shù)據(jù)類型判斷方法,特別適用于復雜類型判斷。

到此這篇關于JavaScript數(shù)據(jù)類型判斷之Object.prototype.toString.call() 的詳解的文章就介紹到這了,更多相關js Object.prototype.toString.call()內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Javascript 閉包引起的IE內存泄露分析

    Javascript 閉包引起的IE內存泄露分析

    Javascript 閉包引起的IE內存泄露分析,js_obj是一個DOM元素的引用,DOM元素它長期在網(wǎng)頁當中,不會消失,而這個DOM元素的一屬性
    2012-05-05
  • javascript編寫簡易計算器

    javascript編寫簡易計算器

    這篇文章主要為大家詳細介紹了javascript編寫簡易計算器的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • js實現(xiàn)簡單進度條效果

    js實現(xiàn)簡單進度條效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)簡單進度條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 微信{

    微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_

    這篇文章主要介紹了微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"},非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • JS實現(xiàn)的緩沖運動效果示例

    JS實現(xiàn)的緩沖運動效果示例

    這篇文章主要介紹了JS實現(xiàn)的緩沖運動效果,涉及JavaScript數(shù)值運算與時間函數(shù)相關使用技巧,需要的朋友可以參考下
    2018-04-04
  • momentjs實現(xiàn)DatePicker時間禁用的項目實踐

    momentjs實現(xiàn)DatePicker時間禁用的項目實踐

    momentjs是一個處理時間的js庫,簡潔易用,本文來介紹一下momentjs實現(xiàn)DatePicker時間禁用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 通過JavaScript實現(xiàn)動態(tài)圣誕樹詳解

    通過JavaScript實現(xiàn)動態(tài)圣誕樹詳解

    這篇文章主要為大家介紹幾個好看的基于HTML+CSS+JS的圣誕樹,希望圣誕節(jié)那天圣誕老爺爺能把我喜歡的你塞到我床上。感興趣的小伙伴可以跟隨小編一起學習一下
    2021-12-12
  • 向當前style sheet中插入一個新的style實現(xiàn)方法

    向當前style sheet中插入一個新的style實現(xiàn)方法

    今天為了臨時解決頁面樣式問題,為了方便,直接在這個公共的js里面向style sheet插入新的style rule,感興趣的朋友可以出納卡下哈
    2013-04-04
  • 詳解JavaScript按概率隨機生成事件

    詳解JavaScript按概率隨機生成事件

    本篇文章主要介紹了詳解JavaScript按概率隨機生成事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • VScode中配置JavaScript編譯環(huán)境的方法

    VScode中配置JavaScript編譯環(huán)境的方法

    這篇文章主要介紹了VSCODE中配置JavaScript編譯環(huán)境的方法,方式一 使用Node.js做為解釋器運行JS代碼 Node.js的安裝和配置,方式二使用VSCODE插件Code Runner運行JS代碼,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08

最新評論