`

javascriopt shallow copy 与 deep copy

阅读更多
shallow copy
function shallowCopy(p) {
  var c = {};  
  for (var i in p) {
    c[i] = p[i];
  }
  c.uber = p;
  return c;
}


deep copy
function deepCopy(p, c) {
  var c = c || {}; 
  for (var i in p) {
    if (typeof p[i] === 'object') {
      //如果对象的构造函数是Array函数,就使用Array表示形式
      //为什么要这么判断,原因是对象的constructor的值返回的是对象的构造函数,它是一个function,而Array也是一个函数,故这里比较的是引用
      c[i] = (p[i].constructor === Array) ? [] : {}; 
      deepCopy(p[i], c[i]);
    } else {
      c[i] = p[i]; 
    } 
  }
  return c;
}


from:object-oriented-javascript
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics