代码:
function clone(obj) {
var buf
if (obj instanceof Array) {
var i = obj.length
buf = [] // 向空的数组中复制内容
while (i--) {
buf[i] = clone(obj[i])
}
return buf
} else if (obj instanceof Object) {
buf = {} // 向空的对象中复制内容
for (var k in obj) {
buf[k] = clone(obj[k])
}
return buf
} else {
// 值类型直接返回
return (buf = obj)
}
}
// 测试
var arr = [1, { a: 100 }, null]
var obj = { a: 100, b: true, c: { d: 'Hello' } }
var num = 200
console.log(clone(arr))
console.log(clone(obj))
console.log(clone(num))