最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:01:18
文檔

js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧

js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧:今天剛好在學(xué)習(xí)支付寶 JS 框架 base.js 。瞄了一下,實現(xiàn)是這樣的: 代碼如下: if (value instanceof Array (!(value instanceof Object) && (Object.prototype.toString.call((value)) == '[object Array
推薦度:
導(dǎo)讀js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧:今天剛好在學(xué)習(xí)支付寶 JS 框架 base.js 。瞄了一下,實現(xiàn)是這樣的: 代碼如下: if (value instanceof Array (!(value instanceof Object) && (Object.prototype.toString.call((value)) == '[object Array

今天剛好在學(xué)習(xí)支付寶 JS 框架 base.js 。瞄了一下,實現(xiàn)是這樣的:
代碼如下:
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';
}

怎么說呢,亂。當然,也可以說是,“史上最全”,它確實使用了最主流的方法,只是把他們都寫一起了而已。


像我們所知道的,用 instanceof 和 constructor 是最直接的、簡單的方式:
代碼如下:
var arr = [];
arr instanceof Array; // true
arr.constructor == Array; //true

只是,由于在不同 iframe 中創(chuàng)建的 Array 并不共享 prototype。如果這樣用。麻煩就來了。那么,如果要應(yīng)用在框架中,這種方式肯定是行不通的。倒是,使用 Douglas Crockford 的填鴨式方法是可以解決這個問題(《JavaScript 語言精粹》P61):
代碼如下:
var is_array = function(value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
};

不過,是否還有更簡單的方法呢?其實,像我們自己用的,不就是了么?
代碼如下:Object.prototype.toString.call(value) == '[object Array]'
上面這種寫法,是 jQuery 正在使用的。目前,淘寶的 kissy 也是使用這種方式。難道這不是目前最簡潔,而且最有效的方式么?個人感覺內(nèi)部框架寫得有點累贅了。例行總結(jié),最終方案:
代碼如下:
var isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
==============

UPDATE: 2010.12.31 00:01(出處)

判斷類型,很酷。具體的,跟上面是一個道理:
代碼如下:
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;
}

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧

js判斷是否為數(shù)組的函數(shù):isArray()_javascript技巧:今天剛好在學(xué)習(xí)支付寶 JS 框架 base.js 。瞄了一下,實現(xiàn)是這樣的: 代碼如下: if (value instanceof Array (!(value instanceof Object) && (Object.prototype.toString.call((value)) == '[object Array
推薦度:
標簽: 判斷 js 判斷的
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top