js判斷是否為數(shù)組的函數(shù): isArray()
if (value instanceof Array ||
(!(value instanceof Object) &&
(Object.prototype.toString.call((value)) == '[object Array]') ||
typeof value.length == 'number' &&
typeof value.splice != 'undefined' &&
typeof value.propertyIsEnumerable != 'undefined' &&
!value.propertyIsEnumerable('splice'))) {
return 'array';
}
怎么說(shuō)呢,亂。當(dāng)然,也可以說(shuō)是,“史上最全”,它確實(shí)使用了最主流的方法,只是把他們都寫(xiě)一起了而已。
像我們所知道的,用 instanceof 和 constructor 是最直接的、簡(jiǎn)單的方式:
var arr = [];
arr instanceof Array; // true
arr.constructor == Array; //true
只是,由于在不同 iframe 中創(chuàng)建的 Array 并不共享 prototype。如果這樣用。麻煩就來(lái)了。那么,如果要應(yīng)用在框架中,這種方式肯定是行不通的。倒是,使用 Douglas Crockford 的填鴨式方法是可以解決這個(gè)問(wèn)題(《JavaScript 語(yǔ)言精粹》P61):
var is_array = function(value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
};
不過(guò),是否還有更簡(jiǎn)單的方法呢?其實(shí),像我們自己用的,不就是了么?
上面這種寫(xiě)法,是 jQuery 正在使用的。目前,淘寶的 kissy 也是使用這種方式。難道這不是目前最簡(jiǎn)潔,而且最有效的方式么?個(gè)人感覺(jué)內(nèi)部框架寫(xiě)得有點(diǎn)累贅了。例行總結(jié),最終方案:
var isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
==============
UPDATE: 2010.12.31 00:01(出處)
判斷類(lèi)型,很酷。具體的,跟上面是一個(gè)道理:
var is = function (obj,type) {
return (type === "Null" && obj === null) ||
(type === "Undefined" && obj === void 0 ) ||
(type === "Number" && isFinite(obj)) ||
Object.prototype.toString.call(obj).slice(8,-1) === type;
}
- JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
- JS 判斷某變量是否為某數(shù)組中的一個(gè)值的3種方法(總結(jié))
- JavaScript判斷數(shù)組是否包含指定元素的方法
- JavaScript判斷變量是否為數(shù)組的方法(Array)
- JS判斷元素是否在數(shù)組內(nèi)的實(shí)現(xiàn)代碼
- JS判斷數(shù)組中是否有重復(fù)值得三種實(shí)用方法
- js判斷數(shù)據(jù)類(lèi)型如判斷是否為數(shù)組是否為字符串等等
- js判斷數(shù)組是否包含某個(gè)字符串變量的實(shí)例
- JavaScript判斷數(shù)組重復(fù)內(nèi)容的兩種方法(推薦)
- JavaScript判斷數(shù)組的方法總結(jié)與推薦
相關(guān)文章
JS簡(jiǎn)單判斷是否在微信瀏覽器打開(kāi)的方法示例
這篇文章主要介紹了JS簡(jiǎn)單判斷是否在微信瀏覽器打開(kāi)的方法,結(jié)合實(shí)例形式分析了javascript針對(duì)瀏覽器相關(guān)信息的獲取與判定操作技巧,需要的朋友可以參考下2019-01-01js字符串去重復(fù)id的實(shí)現(xiàn)代碼
最近由于需要我們將相關(guān)id的重復(fù)的去掉,一個(gè)是客戶(hù)端一個(gè)后臺(tái)程序把關(guān),這里分享下js的去重復(fù)id的實(shí)現(xiàn)代碼2013-07-07點(diǎn)擊進(jìn)行復(fù)制的JS代碼實(shí)例
這篇文章介紹了點(diǎn)擊進(jìn)行復(fù)制的JS代碼實(shí)例,有需要的朋友可以參考一下2013-08-08JSON.stringify實(shí)例詳解以及靈活運(yùn)用
在向服務(wù)器發(fā)送數(shù)據(jù)時(shí)一般是字符串,我們可以使用?JSON.stringify()方法將JavaScript對(duì)象轉(zhuǎn)換為字符串,下面這篇文章主要給大家介紹了關(guān)于JSON.stringify及靈活運(yùn)用的相關(guān)資料,需要的朋友可以參考下2022-03-03ES6如何用一句代碼實(shí)現(xiàn)函數(shù)的柯里化
這篇文章主要介紹了ES6如何用一句代碼實(shí)現(xiàn)函數(shù)的柯里化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01微信小程序頁(yè)面?zhèn)鞫鄠€(gè)參數(shù)跳轉(zhuǎn)頁(yè)面的實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序頁(yè)面?zhèn)鞫鄠€(gè)參數(shù)跳轉(zhuǎn)頁(yè)面的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05JavaScript對(duì)象拷貝與賦值操作實(shí)例分析
這篇文章主要介紹了JavaScript對(duì)象拷貝與賦值操作,結(jié)合實(shí)例形式分析了javascript對(duì)象定義、拷貝、賦值等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-12-12