摘要:來實現(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
摘要:文中的多為構造函數(shù)原型對象屬性為函數(shù)的專屬屬性,表示函數(shù)的原型對象。關于各種數(shù)據(jù)類型的屬性的展示對象的構造器函數(shù)該屬性指向創(chuàng)建該對象原型的構造函數(shù)。對對象的凍結狀態(tài)的設置和判斷,前者讓凍結對象,后者判斷對象是否被凍結。 前言 上篇文章介紹了JS的對象,本文將介紹Object這個基類,主要介紹其屬性和方法(其實這些在MDN里都有^_^,點擊這里可以直通MDN)。好了廢話不多說了,直接開始...
摘要:中常常會看到這種代碼變量與的比較這種用法很有問題用來判斷變量是否被賦予了一個合理的值比如不好的寫法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個數(shù)組因為我們看到的擁有和這段代碼的意圖非常明顯如果參數(shù)不是一個數(shù)組則停止接下來的操作這種寫法的問題在 js中, 常常會看到這種代碼: 變量與null的比較(這種用法很有問題), 用來判斷變量是否被賦予了一個合理的值. 比如: const Contr...
摘要:在中,要說如果有幾乎會在每一個文件都要用到的一個全局函數(shù)和一個全局對象,那應該是非和莫屬了。它們是模塊機制的基石。若仍未返回,則為指定的模塊路徑依次加上,和,判斷是否存在,若存在則返回拼接后的路徑。 在 Node.js 中,要說如果有幾乎會在每一個文件都要用到的一個全局函數(shù)和一個全局對象,那應該是非 require 和 module.exports 莫屬了。它們是 Node.js 模塊...
摘要:沒有清空的原因是,內部函數(shù)返回的匿名函數(shù)的作用域鏈仍然保有對外部函數(shù)的變量的引用。在作用域鏈中,外部函數(shù)的活動對象始終處于第二位,外部函數(shù)的外部函數(shù)的活動對象處于第三位,直至作為作用域鏈終點的全局執(zhí)行環(huán)境。 前言 閉包這個概念幾乎成了JavaScript面試者必問的話題之一,可以毫不客氣地說對閉包的理解和運用體現(xiàn)了一名js工程師的功底。那么閉包到底是什么,它又能帶來什么特別的作用?網(wǎng)上...
閱讀 3179·2023-04-25 19:09
閱讀 3888·2021-10-22 09:54
閱讀 1764·2021-09-29 09:35
閱讀 2919·2021-09-08 09:45
閱讀 2264·2021-09-06 15:00
閱讀 2775·2019-08-29 15:32
閱讀 1042·2019-08-28 18:30
閱讀 376·2019-08-26 13:43