国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript判斷對象是否為數組

2019-11-20 10:57:58
字體:
來源:轉載
供稿:網友

文中為大家分享了三種JavaScript判斷對象是否為數組的方法,

1. typeof

首先我們會想到的是使用typeof來檢測數據類型,但是對于Function, String, Number, Undefined等這幾種基本類型來說,使用typeof來檢測都可以檢測到,比如代碼如下:

function test(){}console.log(typeof 1); // numberconsole.log(typeof test); // function console.log(typeof "yunxi"); // stringconsole.log(typeof undefined); // undefined

但是對于數組或者正則來說,使用typeof來檢測的話,那就滿足不了,因為當我們檢測數組或者正則的話,那么返回的類型將會是一個對象object,如下代碼所示:

console.log(typeof []); // objectconsole.log(typeof //d+/g); // object

2. Instanceof

由此我們很容易會想到使用instanceof來檢測某個對象是否是數組的實例,該檢測會返回一個布爾型(boolean),如果是數組的話,返回true,否則的話返回false;我們再來看下上面的檢測是否為數組的代碼如下:

console.log([] instanceof Array); // trueconsole.log(//d+/g instanceof Array); // false

如上可以看到使用instanceof確實可以判斷是否為數組的列子;
3. constructor屬性

在javascript中,每個對象都有一個constructor屬性,它引用了初始化該對象的構造函數,比如判斷未知對象的類型,因此我們可以如下寫一個方法,代碼如下:

function isArray(obj) {  return typeof obj == 'object' && obj.constructor == Array}// 測試democonsole.log(isArray([])); // truevar a = {"a":1};console.log(isArray(a)); // falsevar b = [1,2,3];console.log(isArray(b)); // trueconsole.log(isArray(//d+/g));// false

如上可以看到,通過調用isArray 方法也可以判斷是否為數組的列子。
我們現在可以看到,對于第二點和第三點分別使用instanceof方法和constructor屬性貌似都可以來判斷是否為數組了,但是也有列外情況,比如在跨框架iframe的時候使用頁面中的數組時,會失敗,因為在不同的框架iframe中,創建的數組是不會相互共享其prototype屬性的;如下代碼測試即可得到驗證~

var iframe = document.createElement('iframe');document.body.appendChild(iframe);xArray = window.frames[window.frames.length-1].Array;    var arr = new xArray("1","2","3","4","5");//這個寫法IE下是不支持的,標準瀏覽器firefox,chrome下有console.log(arr); // 打印出 ["1", "2", "3", "4", "5"]console.log(arr instanceof Array); // false console.log(arr.constructor === Array); // false

如上的方法我們都不能來判斷一個對象是否為數組的方式; 但是我們在看ECMA262中可以看到,可以使用 Object.prototype.toString.call()方法來判斷一個對象是否為數組;如下代碼:

function isArray(obj) {  return Object.prototype.toString.call(obj) == '[object Array]';}// 代碼調用console.log(isArray([])); // trueconsole.log(isArray([1,2,3])); // truevar iframe = document.createElement('iframe');document.body.appendChild(iframe);xArray = window.frames[window.frames.length-1].Array;    var arr = new xArray("1","2","3","4","5");console.log(arr); // ["1","2","3","4","5"]console.log(isArray(arr)); // true

以上就是本文的全部內容,幫助大家學習JavaScript判斷對象是否為數組的方法,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都昌县| 武城县| 江陵县| 新田县| 高雄县| 来宾市| 旬阳县| 金华市| 沙雅县| 汪清县| 河南省| 平阴县| 闸北区| 日喀则市| 台北市| 根河市| 勐海县| 德兴市| 海淀区| 鹤峰县| 邢台县| 南岸区| 澜沧| 罗源县| 确山县| 双柏县| 郁南县| 三河市| 鄂伦春自治旗| 会泽县| 黎平县| 溧阳市| 托克逊县| 准格尔旗| 栖霞市| 阳山县| 新和县| 德保县| 平湖市| 杨浦区| 静宁县|