14 JavaScript References VS Copy

2018-12-20  本文已影响0人  地平线0530

效果

效果图

Demo
Github

知识点

笔记

在复制 Array 和 Object 类型数据的时候,不能通过直接赋值的办法,如下:

// Array
const arr1 = ['a', 'b', 'c', 'd']
const arr2 = arr1

console.log(arr1, arr2)  // ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']

arr2[2] = 'x'

console.log(arr1, arr2)  // ['a', 'b', 'x', 'd'], ['a', 'b', 'x', 'd']
// Object
const obj1 = {
  name: '令狐冲',
  age: 31
}
const obj2 = obj1

console.log(obj1, obj2)  // {name: '令狐冲', age: 31}, {name: '令狐冲', age: 31}

obj2.name = '任盈盈'

console.log(obj1, obj2)  // {name: '任盈盈', age: 31}, {name: '任盈盈', age: 31}

这样的结果显然不是我们想要的,原因就是在 JavaScript 中直接将对象赋值给变量,只是对它的引用,类似于 C 语言中的指针,为了应对这种特性,我们有以下几种解决办法:

拷贝数组

拷贝对象

上一篇下一篇

猜你喜欢

热点阅读