所谓”深拷贝”,就是能够实现真正意义上的数组和对象的拷贝。它的实现并不难,只要递归调用”浅拷贝”就行了。
function deepCopy(p, c) { var c = c || {}; for (var i in p) { if (typeof p[i] === 'object') { c[i] = (p[i].constructor === Array) ? [] : {}; deepCopy(p[i], c[i]); } else { c[i] = p[i]; } } return c; }使用的时候这样写:
var WD = deepCopy(MED);现在,给父对象加一个属性,值为数组。然后,在子对象上修改这个属性:
MED.skills = ['‘html’','css','Javascript']; WD.skills.push('teamwork');这时,父对象就不会受到影响了。
console.log(WD.skills); //‘html’,'css','Javascript','teamwork' console.log(MED.skills); //‘html’,'css','Javascript'目前,jQuery库使用的就是这种继承方法。