91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在JavaScript中區分Object與Aarry

發布時間:2021-03-19 15:51:26 來源:億速云 閱讀:121 作者:Leah 欄目:web開發

如何在JavaScript中區分Object與Aarry?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一、經常遇見的問題:

JS中判斷一個對象的類型時,通常使用typeof,這時候問題就來了,因為typeof()辨別數組的時候返回的是object,所以JS中判斷一個對象是不是數組需要一些特殊的處理方式

二、開門見山

開發中要判斷一個對象是不是數組,推薦使用下面這個函數:

function isArray(obj){
  if(Array.isArray){
    return Array.isArray(obj);
  }else{
   return Object.prototype.toString.call(obj)==="[object Array]";
  }
}

上面這個函數是方便急于解決問題的人,下面我將具體述說六種方法,因為可能面試的時候考官需要一個知識全面的你;

三、六種方案詳解:

(1)方法一:利用toString方法

通過調用toString( )方法試著將該變量轉化為代表其類型的string。該方法對于真正的array可行;參數對象轉化為string時

返回[object Arguments]會轉化失敗;此外, 對于含有數字長度屬性的object類也會轉化失敗。

方法如下:

<!DOCTYPE html>
<html>
 <head>
 <title>Array的判斷方法</title>
 <meta charset="utf-8"/>
 <script>
	function isArrayOne(arr){
		return <span >Object.prototype.toString.call(arr) === "[object Array]";</span>
	}
	var obj = {"k1":"v1"};
	var arr = [1,2];
	console.log("對象的結果:"+isArrayOne(obj));
	console.log("數組的結果:"+isArrayOne(arr));
 </script>
 </head>
 <body>
 
 </body>
</html>

結果如圖:

如何在JavaScript中區分Object與Aarry

注意:推薦使用“===”全等于而不使用“==”等等于,因為效率更高!

(2)方法二:通過isArray:

使用Javascript 1.8.5(ECMAScript 5),變量名字.isArray( )可以實現這個目的,前提是有支持這一函數,其實isArray就是

方法一的封裝使用。

使用方法十分簡單:

Array.isArray(obj); //obj是待檢測的對象

返回true或false,如果為true則為數組

(3)方法三:通過instanceof運算符來判斷,

注意:instanceof運算符左邊是子對象(待測對象),右邊是父構造函數(這里是Array),

即:子對象 instanceof 父構造函數

instance: 實例:凡是用new 構造函數()創建出的對象,都稱為是構造函數的實例

扯半天都迷糊了,還是直接看代碼好:

<!doctype html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="Generator" content="EditPlus&reg;">
 <meta name="Author" content="">
 <meta name="Keywords" content="">
 <meta name="Description" content="">
 <title>Document</title>
 <script>
	var obj = {"k1":"v1"};
	var arr = [1,2];
	console.log("Instanceof處理對象的結果:"+(obj instanceof Array));
	console.log("Instanceof處理數組的結果:"+(arr instanceof Array));
 </script>
 </head>
 <body>
 
 </body>
</html>

運行結果如下:

如何在JavaScript中區分Object與Aarry

(4)使用isPrototypeOf()函數

原理:檢測一個對象是否是Array的原型(或處于原型鏈中,不但可檢測直接父對象,還可檢測整個原型鏈上的所有父對象

使用方法: parent.isPrototypeOf(child)來檢測parent是否為child的原型;

需注意的是isPrototypeOf()函數實現的功能和instancof運算符非常類似;

具體代碼:

Array.prototype.isPrototypeOf(arr) //true表示是數組,false不是數組

(5)利用構造函數constructor

具體代碼:

<!doctype html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="Generator" content="EditPlus&reg;">
 <meta name="Author" content="">
 <meta name="Keywords" content="">
 <meta name="Description" content="">
 <title>Document</title>
 <script>
	var obj = {'k':'v'};
	var t1 = new Array(1);
	var t2 = t1;
	console.log(obj.constructor == Array);
	console.log(t1.constructor == Array);
	console.log(t2.constructor == Array);
 </script>
 </head>
 <body>
	
 </body>
</html>

結果如圖

如何在JavaScript中區分Object與Aarry

(6)使用typeof(對象)+類型名結合判斷:

代碼如下:

<!doctype html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="Generator" content="EditPlus&reg;">
 <meta name="Author" content="">
 <meta name="Keywords" content="">
 <meta name="Description" content="">
 <title>Document</title>
 <script>
	function isArrayFour(arr){
		if(typeof(arr)==="object"){
			if(arr.concat){
				return "This is Array";
			}else{
				return "This Not Array";
			}
		}
	}
	var arr = [1];
	var obj = {'k':'v'};
	console.log(typeof(arr));
	console.log(typeof(obj));
	console.log(isArrayFour(arr));
	console.log(isArrayFour(obj));
 </script>
 </head>
 <body>
 
 </body>
</html>

結果如下:

這種方法其實有局限性,有的同學可能一下就破解了,那就是要是

要是對象中不巧定義了這屬性怎么辦

var obj = {'concat':'Teast me?'};

如何在JavaScript中區分Object與Aarry

看完上述內容,你們掌握如何在JavaScript中區分Object與Aarry的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田东县| 龙海市| 托克托县| 巴塘县| 天等县| 长泰县| 淮安市| 彭水| 南丹县| 吐鲁番市| 富宁县| 双鸭山市| 比如县| 台前县| 民勤县| 安乡县| 定日县| 宜兰县| 胶州市| 道孚县| 迭部县| 贵州省| 德江县| 祁连县| 墨脱县| 平武县| 潜江市| 资溪县| 正镶白旗| 泗洪县| 航空| 离岛区| 辰溪县| 农安县| 岳普湖县| 通城县| 张家港市| 凤山市| 福建省| 江油市| 玛曲县|