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

toString.call()通用的判斷數(shù)據(jù)類型方法示例

 更新時間:2020年08月28日 15:15:07   作者:麥樂樂  
這篇文章主要給大家介紹了關(guān)于toString.call()通用的判斷數(shù)據(jù)類型方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

大家都知道判斷數(shù)據(jù)類型的方法有很多。我們常用的有typeof但是,這個方法有一定的局限性。

typeof null
// "object"
 
typeof [8]
// "object"
 
typeof {}
// "object"
 
typeof function(){}
// "function"
typeof 2
//"number"
 
typeof ""
//"string"
 
typeof true
//"boolean"
 
typeof undefined
//"undefined"
 
typeof Symbol(2)
// "symbol"

typeof 無法區(qū)分null 數(shù)組和對象,通常我們會區(qū)分判斷Array和Object

有時會用instanceof 來判斷是不是一個對象的實例子

[] instanceof Array
 // true 這種方法可以判斷數(shù)組,不能區(qū)分對象
[] instanceof Object
// true
 
null instanceof Object
// false 也不能區(qū)分null

下面介紹一種方法,對每一種數(shù)據(jù)類型都實用。

toString.call(function(){})
// "[object Function]"
 
toString.call(null)
//"[object Null]"
 
toString.call([2])
"[object Array]"
 
toString.call(undefined)
//"[object Undefined]"
 
toString.call('stjd')
//"[object String]"
 
toString.call(1)
//"[object Number]"
 
toString.call(true)
//"[object Boolean]"
 
toString.call(Symbol(3))
// "[object Symbol]"
 
toString.call({q:8})
//"[object Object]"

再來思考, toString.call([2]) 意思就是改變方法中的this指向,指向傳遞進(jìn)去的參數(shù),也就是[2]。那我這樣寫不是更直觀嗎?[2].toString()。結(jié)果

[2].toString()
//"2"
  var obj = {a: 67}
  console.log(obj.toString())
  // [object Array]

對比上面兩個返回的值是不一樣的。這是因為[2].toString()調(diào)用的是數(shù)組的toSting()方法,而不是對象的toSting()方法。Array改寫了Object的toString方法。

toSting.call()實際上就是 Object.prototype.toSting.call()

console.log(Object.prototype.toString.call([33])) // [object Array]

而[2].toSting()實際上是

console.log(Array.prototype.toString.call([2])) //2

使用的過程中,可以這樣封裝函數(shù)

  function isType(type) {
   return function(obj) {
    return {}.toString.call(obj) == "[object " + type + "]"
   }
  }
  
  var isObject = isType("Object")
  var isString = isType("String")
  var isArray = Array.isArray || isType("Array")
  var isFunction = isType("Function")
  var isUndefined = isType("Undefined")

總結(jié)

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

相關(guān)文章

  • ES6下子組件調(diào)用父組件的方法(推薦)

    ES6下子組件調(diào)用父組件的方法(推薦)

    ES6下如何實現(xiàn)子組件調(diào)用父組件?下面小編就為大家分享一篇ES6下子組件調(diào)用父組件的方法。希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • js常用排序?qū)崿F(xiàn)代碼

    js常用排序?qū)崿F(xiàn)代碼

    js常用排序,整理了,常用的數(shù)組互換。
    2010-12-12
  • JavaScript 阻塞方式實現(xiàn)異步任務(wù)隊列

    JavaScript 阻塞方式實現(xiàn)異步任務(wù)隊列

    本文主要介紹了JavaScript 阻塞方式實現(xiàn)異步任務(wù)隊列,主要介紹了兩種方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • JavaScript生成隨機(jī)驗證碼代碼實例

    JavaScript生成隨機(jī)驗證碼代碼實例

    這篇文章主要介紹了JavaScript生成隨機(jī)驗證碼代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺談js數(shù)組splice刪除某個元素爬坑

    淺談js數(shù)組splice刪除某個元素爬坑

    這篇文章主要介紹了淺談js數(shù)組splice刪除某個元素爬坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 利用騰訊的ip地址庫做ip物理地址定位

    利用騰訊的ip地址庫做ip物理地址定位

    騰訊的這個還是相對比較準(zhǔn)確的。因為騰訊每個QQ用戶發(fā)現(xiàn)自己匹配的地理位置信息不準(zhǔn)確都可以提交更正的
    2010-07-07
  • p5.js實現(xiàn)動態(tài)圖形臨摹

    p5.js實現(xiàn)動態(tài)圖形臨摹

    這篇文章主要為大家詳細(xì)介紹了p5.js實現(xiàn)動態(tài)圖形臨摹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JavaScript面向?qū)ο蟪绦蛟O(shè)計創(chuàng)建對象的方法分析

    JavaScript面向?qū)ο蟪绦蛟O(shè)計創(chuàng)建對象的方法分析

    這篇文章主要介紹了JavaScript面向?qū)ο蟪绦蛟O(shè)計創(chuàng)建對象的方法,結(jié)合實例形式分析了javascript使用object構(gòu)造函數(shù)和對象字面量來創(chuàng)建對象的相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • JS中數(shù)學(xué)計算精度問題的解決方案

    JS中數(shù)學(xué)計算精度問題的解決方案

    這篇文章主要給大家介紹了JS中數(shù)學(xué)計算精度問題的解決方案,文中通過代碼示例和圖文結(jié)合給大家講解非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • javascript 網(wǎng)頁跳轉(zhuǎn)的方法

    javascript 網(wǎng)頁跳轉(zhuǎn)的方法

    昨天練習(xí)的時候正好要用到跳轉(zhuǎn)代碼,在網(wǎng)上找了一下,覺得下面幾個不錯...整理了一下發(fā)上來...
    2008-12-12

最新評論