最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

語法

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

為什么使用它?

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

返回值

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

數(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]
自定義類實(shí)例[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" (誤導(dǎo)性結(jié)果)
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"

注意事項

自定義類實(shí)例(非內(nèi)置對象)都會返回 [object Object],如果需要區(qū)分,可以結(jié)合 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() 是一種強(qiáng)大的數(shù)據(jù)類型判斷方法,特別適用于復(fù)雜類型判斷。

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

相關(guān)文章

  • javascript實(shí)現(xiàn)手機(jī)震動API代碼

    javascript實(shí)現(xiàn)手機(jī)震動API代碼

    一個新的API出來了。HTML5 (很快)將支持用戶設(shè)備振動。這明顯是很有趣的事情,比如它可以用戶觸發(fā)提醒,提升游戲體驗(yàn),下面小編給大家整理javascript手機(jī)震動api,需要的朋友可以參考下
    2015-08-08
  • Webpack常見使用配置小結(jié)

    Webpack常見使用配置小結(jié)

    本文主要介紹了Webpack常見使用配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • webpack常用配置總覽(小結(jié))

    webpack常用配置總覽(小結(jié))

    這篇文章主要介紹了webpack常用配置總覽(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 通過js修改input、select默認(rèn)字體顏色

    通過js修改input、select默認(rèn)字體顏色

    這篇文章主要介紹了通過js修改input、select默認(rèn)字體顏色,需要的朋友可以參考下
    2017-04-04
  • 讓getElementsByName適應(yīng)IE和firefox的方法

    讓getElementsByName適應(yīng)IE和firefox的方法

    讓getElementsByName適應(yīng)IE和firefox的方法...
    2007-09-09
  • js+css實(shí)現(xiàn)tab菜單切換效果的方法

    js+css實(shí)現(xiàn)tab菜單切換效果的方法

    這篇文章主要介紹了js+css實(shí)現(xiàn)tab菜單切換效果的方法,以實(shí)例形式完整講述了css與js的實(shí)現(xiàn)代碼,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • js數(shù)組的基本使用總結(jié)

    js數(shù)組的基本使用總結(jié)

    這篇文章主要給大家介紹了關(guān)于js數(shù)組的基本使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Microsoft Ajax Minifier 壓縮javascript的方法

    Microsoft Ajax Minifier 壓縮javascript的方法

    使用Microsoft AJAX 庫 (第六個預(yù)覽版) 其中有一個 ajaxmin.exe 可以壓縮Js文件可以在dos 命令下 /? 查看其參數(shù)說明。
    2010-03-03
  • Java 生成隨機(jī)字符的示例代碼

    Java 生成隨機(jī)字符的示例代碼

    這篇文章主要介紹了Java 生成隨機(jī)字符的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • js 函數(shù)的副作用分析

    js 函數(shù)的副作用分析

    函數(shù)副作用 指當(dāng)調(diào)用函數(shù)時,除了返回函數(shù)值之外,還對主調(diào)用函數(shù)產(chǎn)生附加的影響。例如修改全局變量(函數(shù)外的變量)或修改參數(shù)。
    2011-08-08

最新評論

鄂伦春自治旗| 于都县| 铁岭县| 交城县| 佛教| 长泰县| 余江县| 高唐县| 团风县| 百色市| 海丰县| 长治县| 永安市| 乾安县| 忻州市| 蓝山县| 罗田县| 平顶山市| 宝鸡市| 昂仁县| 贵阳市| 六枝特区| 邻水| 榆林市| 临武县| 南城县| 山阴县| 曲水县| 乐平市| 印江| 广平县| 麻栗坡县| 黄石市| 朝阳县| 沅陵县| 抚顺县| 乾安县| 威远县| 高台县| 全南县| 靖西县|