js如何判斷物件的屬性值是物件還是陣列

antzone發表於2017-04-07

本章節介紹一下如何判斷一個物件直接量的屬性值是陣列還是物件。

程式碼非常的簡單需要的朋友可以做一下參考,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
function deepCopy(f, c) {
  for (var prop in f) {
    if (typeof f[prop] === 'object') {
      c[prop] = (f[prop].constructor === Array) ? [] : {};
     deepCopy(f[prop], c[prop]);
    } 
     else {
       c[prop] = f[prop];
    }
  }
  return c; 
}

上面的程式碼中具有此判斷功能,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function deepCopy(f, c) {},第一個引數是一個物件,它的屬性會被複制到物件c上。

(2).for (var prop in f),遍歷物件中的每一個屬性。

(3).if (typeof f[prop] === 'object')判斷屬性值是否是一個物件。

(4).c[prop] = (f[prop].constructor === Array) ? [] : {},判斷是否是陣列,如果是則建立一個空陣列,否則建立一個物件直接量。

(5).deepCopy(f[prop], c[prop]),通過地櫃再進行相同的操作。

(6).else {

    c[prop] = f[prop];

  },否則直接賦值。

二.相關閱讀:

(1).constructor屬性可以參閱javascript constructor一章節。

相關文章