CoffeeScript攻略2.3:CoffeeScrip的type函式
問題
你想在不使用typeof的情況下知道一個函式的型別。(要了解為什麼typeof不靠譜,請參見http://javascript.crockford.com/remedial.html。)
方案
使用下面這個type函式
type = (obj) ->
if obj == undefined or obj == null
return String obj
classToType = new Object
for name in "Boolean Number String Function Array Date RegExp".split(" ")
classToType["[object " + name + "]"] = name.toLowerCase()
myClass = Object.prototype.toString.call obj
if myClass of classToType
return classToType[myClass]
return "object"
討論
這個函式模仿了jQuery的$.type函式http://api.jquery.com/jQuery.type/。
需要注意的是,在某些情況下,只要使用鴨子型別檢測及存在運算子就可以不必檢測物件的型別了。例如,下面這行程式碼不會發生異常,它會在myArray的確是陣列(或者一個帶有push方法的類陣列物件)的情況下向其中推入一個元素,否則什麼也不做。
myArray?.push? myValue
相關文章
- CoffeeScript攻略4.2:類似Python的zip函式Python函式
- CoffeeScript攻略2.5:鏈式呼叫物件物件
- CoffeeScript攻略1.1:嵌入JavaScriptJavaScript
- CoffeeScript攻略1.3:for迴圈
- CoffeeScript攻略3.7:拆分字串字串
- CoffeeScript攻略3.9:匹配字串字串
- CoffeeScript攻略3.8:字串插值字串
- CoffeeScript攻略3.1:重複字串字串
- CoffeeScript攻略4.9:篩選陣列陣列
- CoffeeScript攻略4.8:歸納陣列陣列
- CoffeeScript攻略3.4:查詢子字串字串
- CoffeeScript攻略1.2:比較範圍
- CoffeeScript攻略4.7:對映陣列陣列
- CoffeeScript攻略2.4:建立類變數變數
- CoffeeScript攻略4.10:反轉陣列陣列
- CoffeeScript攻略3.10:生成唯一ID
- CoffeeScript攻略4.1:從陣列生成字串陣列字串
- CoffeeScript攻略2.1:克隆物件(深複製)物件
- CoffeeScript攻略4.6:打亂陣列元素陣列
- 2.3邏輯迴歸損失函式邏輯迴歸函式
- CoffeeScript攻略3.5:清理字串前後的空白符字串
- CoffeeScript攻略4.3:取得陣列最大值陣列
- CoffeeScript攻略4.4:使用陣列交換變數陣列變數
- CoffeeScript攻略4.5:定義陣列範圍陣列
- CoffeeScript攻略3.6:大寫單詞首字母
- CoffeeScript攻略2.2:建立一個不存在的物件字面值物件
- CoffeeScript攻略3.2:把字串轉換為小寫形式字串
- CoffeeScript攻略3.3:把字串轉換為大寫形式字串
- CoffeeScript 已死,CoffeeScript 萬歲!
- main函式的入口函式AI函式
- 超穩攻略!Rancher 2.3手動輪換證書,保護叢集安全!
- [TEAP早期試讀]《深入淺出CoffeeScript》CoffeeScript中的OOPOOP
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- 攻略丨雲開發VS Code 外掛 CloudBase Toolkit 雲函式除錯Cloud函式除錯
- 使用bind()函式的產生的函式用作建構函式this的指向函式
- 函式定義、函式的引數、函式的預設引數函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- 函式宣告和函式表示式的區別函式