JS中的array和Object的區別


一、區別:

  數組表示有序數據的集合,對象表示無需數據的集合。如果數據順序很重要的話,就用數組,否則就用對象的好。

  數組的數據沒有名稱'name'   對象的數據有名稱 'name' 但是在很多編程語言中有個叫關聯數組的,這種數組中的數據是有名稱的。

 二、如何區分array和object:

  var obj = {"k1":"v1"};
  var arr = [1,2];

  1:通過isArray方法

    使用方法: Array.isArray(obj);   //obj是檢測的對象  

  2:通過instanceof運算符來判斷

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

  具體代碼:

    console.log("對象的結果:"+(obj instanceof Array));
    console.log("數組的結果:"+(arr instanceof Array));
  3::使用isPrototypeOf()函數

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

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

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

  具體代碼:

    Array.prototype.isPrototypeOf(arr)  //true表示是數組,false不是數組
  4:利用構造函數constructor

  具體代碼:

    console.log(obj.constructor == Array)  //false
    console.log(arr.constructor == Array)  //true
  5:使用typeof(對象)+類型名結合判斷:

  具體代碼:

    function isArrayFour(arr) {
      if(typeof arr === "object") {
        if(arr.concat) {
          return 'This is Array'
        } else {
          return 'This not Array'
        }
      }
    }
    console.log(typeof(obj))  //"object"
    console.log(typeof(arr))  //"array"
    console.log(isArrayFour(obj))  //This not Array
    console.log(isArrayFour(arr))  //This is Array


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM