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

Javascript中判斷變量是數(shù)組還是對象(array還是object)

 更新時間:2013年08月14日 14:55:01   作者:  
怎樣判斷一個JavaScript變量是array還是obiect,或許有很多初學者對此不是很清楚吧,下面為大家詳細解答下,希望對大家有所幫助
怎樣判斷一個JavaScript變量是array還是obiect?
答案:
1、如果你只是用typeof來檢查該變量,不論是array還是object,都將返回‘objec'。
此問題的一個可行的答案是是檢查該變量是不是object,并且檢查該變量是否有數(shù)字長度(當為空array時長度也可能為0)。
然而,參數(shù)對象【arguments object】(傳給制定函數(shù)的所有參數(shù)),也可能會適用于上述方法,技術(shù)上來說,參數(shù)對象并不是一個array。
此外,當一個對象有a.length屬性的時候,這個方法也不成立。
復(fù)制代碼 代碼如下:

// Real array 正在的數(shù)組
var my_array = [];
// Imposter! 冒名頂替的!
var my_object = {};
my_object.length = 0;
// Potentially faulty 潛在的錯誤
function is_this_an_array(param) {
if (typeof param === 'object' && !isNaN(param.length)) {
console.log('Congrats, you have an array!');
}
else {
console.log('Bummer, not an array');
}
}
// Works 成功
is_this_an_array(my_array);
// Works, but is incorrect 成功了,但是不正確
is_this_an_array(my_object);

2、回答這個問題的另一個答案是用一個更加隱蔽的方法,調(diào)用toString( )方法試著將該變量轉(zhuǎn)化為代表其類型的string。
該方法對于真正的array可行;參數(shù)對象轉(zhuǎn)化為string時返回[object Arguments]會轉(zhuǎn)化失敗;此外,
對于含有數(shù)字長度屬性的object類也會轉(zhuǎn)化失敗。
復(fù)制代碼 代碼如下:

// Real array 真正的數(shù)組
var my_array = [];
// Imposter! 冒名頂替的!
var my_object = {};
my_object.length = 0;
// Rock solid 堅如磐石(檢驗函數(shù))
function is_this_an_array(param) {
if (Object.prototype.toString.call(param) === '[object Array]') {
console.log('Congrats, you have an array!');
}
else {
console.log('Bummer, not an array');
}
}
// Works 成功了
is_this_an_array(my_array);
// Not an array, yay! 不是數(shù)組(array)!
is_this_an_array(my_object);

3、此外,在可能不可靠的多框架DOM環(huán)境中,instanceof是個完美合適的操作。
擴展閱讀:"Instanceof Considered Harmful…"
http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray
復(fù)制代碼 代碼如下:

var my_array = [];
if (my_array instanceof Array) {
console.log('Congrats, you have an array!');
}

4、對于Javascript 1.8.5(ECMAScript 5),變量名字.isArray( )可以實現(xiàn)這個目的
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray
復(fù)制代碼 代碼如下:

var my_array = [];
if (Array.isArray(my_array)) {
console.log('Congrats, you have an array!');
}

相關(guān)文章

  • innerText和textContent對比及使用介紹

    innerText和textContent對比及使用介紹

    innerText使用過程中遇到了FireFox的兼容問題FireFox不支持innerText方法但是有個類似的方法,叫textContent,類似innerText,都是用來獲取(設(shè)置)元素中text的方法,感興趣的朋友可以參考下
    2013-02-02
  • 10個JavaScript中易犯小錯誤

    10個JavaScript中易犯小錯誤

    10個JavaScript中易犯小錯誤,需要大家注意!
    2016-02-02
  • 微信小程序?qū)崿F(xiàn)滑動/點擊切換Tab及scroll-left的使用

    微信小程序?qū)崿F(xiàn)滑動/點擊切換Tab及scroll-left的使用

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)滑動/點擊切換Tab,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • JavaScript檢測原始值、引用值、屬性

    JavaScript檢測原始值、引用值、屬性

    這篇文章主要介紹了JavaScript檢測原始值、引用值、屬性的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 最新評論