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