亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用toString.call()如何實現判斷數據類型

發布時間:2020-11-06 17:52:55 來源:億速云 閱讀:386 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關使用toString.call()如何實現判斷數據類型,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

大家都知道判斷數據類型的方法有很多。我們常用的有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 無法區分null 數組和對象,通常我們會區分判斷Array和Object

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

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

下面介紹一種方法,對每一種數據類型都實用。

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指向,指向傳遞進去的參數,也就是[2]。那我這樣寫不是更直觀嗎?[2].toString()。結果

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

對比上面兩個返回的值是不一樣的。這是因為[2].toString()調用的是數組的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

使用的過程中,可以這樣封裝函數

  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")

看完上述內容,你們對使用toString.call()如何實現判斷數據類型有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青铜峡市| 溧阳市| 金堂县| 天津市| 阜平县| 庆阳市| 四会市| 乌海市| 潼南县| 尉氏县| 白朗县| 平谷区| 弋阳县| 垫江县| 湟源县| 交城县| 中阳县| 普陀区| 济宁市| 丘北县| 陆良县| 涟源市| 佛冈县| 项城市| 东至县| 克山县| 吐鲁番市| 屏东县| 娄底市| 桦甸市| 平遥县| 滦南县| 长阳| 神农架林区| 苏尼特左旗| 锡林浩特市| 景洪市| 常山县| 炉霍县| 沽源县| 齐齐哈尔市|