[关闭]
@Lxyour 2018-09-18T09:01:52.000000Z 字数 744 阅读 694

JS深拷贝与浅拷贝

JavaScript


浅拷贝

  1. var shallowCopy = function (obj) {
  2. // 只拷贝对象
  3. if (typeof obj !== 'object') return;
  4. var newObj = obj instanceof Array ? [] : {};
  5. for (var key in obj) {
  6. if (obj.hasOwnProperty(key)) {
  7. newObj[key] = obj[key];
  8. }
  9. }
  10. return newObj;
  11. }

深拷贝

示例一:

  1. function clone(Obj) {
  2. var buf;
  3. if (Obj instanceof Array) {
  4. buf = []; // 创建一个空的数组
  5. var i = Obj.length;
  6. while (i--) {
  7. buf[i] = clone(Obj[i]);
  8. }
  9. return buf;
  10. } else if (Obj instanceof Object){
  11. buf = {}; // 创建一个空对象
  12. for (var k in Obj) { // 为这个对象添加新的属性
  13. buf[k] = clone(Obj[k]);
  14. }
  15. return buf;
  16. }else{
  17. return Obj;
  18. }
  19. }

示例二:

  1. // 深拷贝
  2. var deepCopy = function (obj) {
  3. // 只拷贝对象
  4. if (typeof obj !== 'object') return;
  5. var newObj = obj instanceof Array ? [] : {};
  6. for (var key in obj) {
  7. if (obj.hasOwnProperty(key)) {
  8. newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
  9. }
  10. }
  11. return newObj;
  12. }
  13. var new_arrD = deepCopy(arrC);
  14. console.log(new_arrD)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注