成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js中判斷是否為一個函數(shù)

Atom / 840人閱讀

摘要:來實現(xiàn),這個函數(shù)可以獲得對象的內部屬性,函數(shù)執(zhí)行過程如下使用方法如下參考資料

怎么判斷一個對象是一個函數(shù)呢?一般情況下,我們都是使用typeof來進行類型判斷,但是這個辦法并不是想象的那么好用,偶然使用typeof來判斷正則表達式時,發(fā)現(xiàn)在firefox2中返回的是"object",firefox3中返回"function",特介紹一種穩(wěn)定的判斷方案:


function isFunction(fn) {
    return (!!fn&&!fn.nodename&&fn.constructor!=String&&fn.constructor!=RegExp&&fn.constructor!=Array&&/function/i.test(fn+""));
}

解釋:首先判斷對象存在,檢測是不是DOM元素,constructor指向創(chuàng)建當前對象的構造函數(shù),那么這些fn.constructor!=String&&fn.constructor!=RegExp&&fn.constructor!=Array大家就能明白了吧,最后一個表達式/function/i.test(fn+""),先將fn轉換成字符串,類似于"function name(){...}",然后查找字符串中有沒有“function”,/i表示查找模式中忽略大小寫

看了評論之后,推薦一種更好用的辦法,能夠判斷Array,String,Data,Function,Boolean,Number等類型。Object.prototype.toString()來實現(xiàn),這個函數(shù)可以獲得對象的內部屬性(class),函數(shù)執(zhí)行過程如下:

Get the [[Class]] property of this object.

Compute a string value by concatenating the three strings “[object “, Result (1), and “]”.

Return Result (2)

使用方法如下:


function isFunction(fn) {
   return Object.prototype.toString.call(fn)=== "[object Function]";
}

參考資料Object.prototype.toString() - JavaScript | MDN

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/85684.html

相關文章

  • js筆記內容

    摘要:定義運算符用來判斷一個構造函數(shù)的屬性所指向的對象是否存在另外一個要檢測對象的原型鏈上,用于引用類型。但其實,實例的來自于構造函數(shù)的。 一、關于css 樣式優(yōu)先級: 行內樣式>id選擇器樣式>類選擇器樣式>標簽選擇器樣式>通配符選擇器的樣式>繼承樣式>默認樣式 二、關于js 關于問題:**JavaScript中的所有事物都是對象??** 從typeof和instanceo...

    n7then 評論0 收藏0
  • JS學習之Object

    摘要:文中的多為構造函數(shù)原型對象屬性為函數(shù)的專屬屬性,表示函數(shù)的原型對象。關于各種數(shù)據(jù)類型的屬性的展示對象的構造器函數(shù)該屬性指向創(chuàng)建該對象原型的構造函數(shù)。對對象的凍結狀態(tài)的設置和判斷,前者讓凍結對象,后者判斷對象是否被凍結。 前言 上篇文章介紹了JS的對象,本文將介紹Object這個基類,主要介紹其屬性和方法(其實這些在MDN里都有^_^,點擊這里可以直通MDN)。好了廢話不多說了,直接開始...

    qujian 評論0 收藏0
  • <<編寫可維護的javascript>> 筆記8(避免'空比較&#

    摘要:中常常會看到這種代碼變量與的比較這種用法很有問題用來判斷變量是否被賦予了一個合理的值比如不好的寫法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個數(shù)組因為我們看到的擁有和這段代碼的意圖非常明顯如果參數(shù)不是一個數(shù)組則停止接下來的操作這種寫法的問題在 js中, 常常會看到這種代碼: 變量與null的比較(這種用法很有問題), 用來判斷變量是否被賦予了一個合理的值. 比如: const Contr...

    young.li 評論0 收藏0
  • 通過源碼解析 Node.js 一個文件被 require 后所發(fā)生的故事

    摘要:在中,要說如果有幾乎會在每一個文件都要用到的一個全局函數(shù)和一個全局對象,那應該是非和莫屬了。它們是模塊機制的基石。若仍未返回,則為指定的模塊路徑依次加上,和,判斷是否存在,若存在則返回拼接后的路徑。 在 Node.js 中,要說如果有幾乎會在每一個文件都要用到的一個全局函數(shù)和一個全局對象,那應該是非 require 和 module.exports 莫屬了。它們是 Node.js 模塊...

    lcodecorex 評論0 收藏0
  • js閉包的底層實現(xiàn)和開發(fā)技巧

    摘要:沒有清空的原因是,內部函數(shù)返回的匿名函數(shù)的作用域鏈仍然保有對外部函數(shù)的變量的引用。在作用域鏈中,外部函數(shù)的活動對象始終處于第二位,外部函數(shù)的外部函數(shù)的活動對象處于第三位,直至作為作用域鏈終點的全局執(zhí)行環(huán)境。 前言 閉包這個概念幾乎成了JavaScript面試者必問的話題之一,可以毫不客氣地說對閉包的理解和運用體現(xiàn)了一名js工程師的功底。那么閉包到底是什么,它又能帶來什么特別的作用?網(wǎng)上...

    Caizhenhao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<