js如何判断对象的属性值是对象还是数组

快乐打工仔 分类:实例代码

本章节介绍一下如何判断一个对象直接量的属性值是数组还是对象。

代码非常的简单需要的朋友可以做一下参考,代码实例如下:

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一章节。

回复

我来回复
  • 暂无回复内容