欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2011年10月30日 23:34:18   作者:  
像 Ajaxian,StackOverflow 等,搜一下,到處都在討論 isArray() 的實現(xiàn)。對于一切都是對象的 JavaScript 來說,確實有點麻煩
今天剛好在學習支付寶 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。如果這樣用。麻煩就來了。那么,如果要應用在框架中,這種方式肯定是行不通的。倒是,使用 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;
}

相關文章

  • JS簡單判斷是否在微信瀏覽器打開的方法示例

    JS簡單判斷是否在微信瀏覽器打開的方法示例

    這篇文章主要介紹了JS簡單判斷是否在微信瀏覽器打開的方法,結(jié)合實例形式分析了javascript針對瀏覽器相關信息的獲取與判定操作技巧,需要的朋友可以參考下
    2019-01-01
  • js字符串去重復id的實現(xiàn)代碼

    js字符串去重復id的實現(xiàn)代碼

    最近由于需要我們將相關id的重復的去掉,一個是客戶端一個后臺程序把關,這里分享下js的去重復id的實現(xiàn)代碼
    2013-07-07
  • js TextArea的選中區(qū)域處理

    js TextArea的選中區(qū)域處理

    js中對于TextArea的選中區(qū)域后進行處理的代碼,需要的朋友可以參考下。
    2010-12-12
  • 點擊進行復制的JS代碼實例

    點擊進行復制的JS代碼實例

    這篇文章介紹了點擊進行復制的JS代碼實例,有需要的朋友可以參考一下
    2013-08-08
  • JSON.stringify實例詳解以及靈活運用

    JSON.stringify實例詳解以及靈活運用

    在向服務器發(fā)送數(shù)據(jù)時一般是字符串,我們可以使用?JSON.stringify()方法將JavaScript對象轉(zhuǎn)換為字符串,下面這篇文章主要給大家介紹了關于JSON.stringify及靈活運用的相關資料,需要的朋友可以參考下
    2022-03-03
  • ES6如何用一句代碼實現(xiàn)函數(shù)的柯里化

    ES6如何用一句代碼實現(xiàn)函數(shù)的柯里化

    這篇文章主要介紹了ES6如何用一句代碼實現(xiàn)函數(shù)的柯里化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • js圖片查看器插件用法示例

    js圖片查看器插件用法示例

    這篇文章主要介紹了js圖片查看器插件用法,結(jié)合實例形式分析了圖片查看器插件viewer.js簡單使用技巧,需要的朋友可以參考下
    2019-06-06
  • JS繼承用法實例分析

    JS繼承用法實例分析

    這篇文章主要介紹了JS繼承用法,實例分析了拷貝繼承、類繼承及原型繼承等的使用技巧,需要的朋友可以參考下
    2015-02-02
  • 微信小程序頁面?zhèn)鞫鄠€參數(shù)跳轉(zhuǎn)頁面的實現(xiàn)方法

    微信小程序頁面?zhèn)鞫鄠€參數(shù)跳轉(zhuǎn)頁面的實現(xiàn)方法

    這篇文章主要介紹了微信小程序頁面?zhèn)鞫鄠€參數(shù)跳轉(zhuǎn)頁面的實現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • JavaScript對象拷貝與賦值操作實例分析

    JavaScript對象拷貝與賦值操作實例分析

    這篇文章主要介紹了JavaScript對象拷貝與賦值操作,結(jié)合實例形式分析了javascript對象定義、拷貝、賦值等相關操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12

最新評論