javascript拷贝

基本类型:深浅拷贝都是一样的效果,所以只有拷贝,值传递,新的内存分配,和原来的没有关系,只是值一样罢了。
引用类型:浅拷贝只是地址的传递,相当于“指针”,指向内存中的一个相同的对象地址。深拷贝是完全复制了一个新的对象,和原来的没有关系,只是内容相同而已。

  • typeof判断数据类型,但输出的结果是string类型的值。typeof obj === ("number" || "string" || "boolean") 等同于typeof obj === "number",其中涉及到了||的短路原理,所以("number" || "string" || "boolean")相当于("number")
  • 字符转换,核心:其他类型会自动转换为布尔值
function cloneObject(src) {
  var result = {};

  for (var i in src) {
  var type = typeof src[i];   
  if (type === 'number' || type === 'string' || type === 'boolean') {
      result[i] = src[i];
    } else {
      result[i] = cloneObject(src[i]);
    }
  }
  return result;
}
// 测试用例:
var srcObj = {
    a: 1,
    b: {
        b1: ["hello", "hi"],
        b2: "JavaScript"
    }
};
var abObj = srcObj; // 浅度克隆
var tarObj = cloneObject(srcObj);// 深度克隆

srcObj.a = 2;
srcObj.b.b1[0] = "hi";

console.log(abObj.a);// 2
//对象的拷贝,里面没有涉及到基本类型值的拷贝!!!
console.log(abObj.b.b1[0]);// "hi" 

console.log(tarObj.a);      // 1
console.log(tarObj.b.b1[0]);    // "hello"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,721评论 18 399
  • 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课...
    前端进阶之旅阅读 14,381评论 13 94
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,906评论 0 4
  • 《论语十二章》 子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”(《学而》) 译...
    王健文思维导图阅读 36,385评论 0 0
  • 是控制不住自己生气还是事情已经忍耐到了一定的程度?我问自己。也许是太在乎了。如果不把那么多的期望投射在别人身上...
    晴七阅读 1,765评论 0 0

友情链接更多精彩内容