拷贝

#1- 复制

#2- 浅拷贝

定义
Array.prototype.slice()
slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改 不单单只是用来切割数组

let arr = [1,2,3]
console.log(arr.slice(0))   // [1,2,3]

Array.prototype.splice() (这个方法会改变源数组 这里只是拿来对比下)
方法通过删除现有元素和/或添加新元素来更改一个数组的内容。

let arr = [1,2,3]
console.log(arr.splice(0,arr.length))   // [1,2,3]

Array.prototype.concat()
concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];
console.log(arr1.concat(arr2));  //  ["a", "b", "c", "d", "e", "f"]

Object.assign()

let arr = {a:1,b:2}
console.log(Object.assign({},arr))   //{a:1,b:2}

以上方法都属于浅拷贝 只对一级属性进行拷贝 对象,数组,方法等复杂数据类型 都是拷贝地址 所以源对象进行改变的时候 拷贝对象也会进行相应的改变

#3- 深拷贝

定义
json序列化反序列化 (function有问题)
jquery $.extend

你可能感兴趣的:(拷贝)