数据类型分为 基本数据类型和引用数据类型 ,基本数据类型的值直接存储在栈内存中,引用数据类型在栈内存中只是存储了一个引用,真正的数据存储在队内存中。
var one = { name: 'wang' }
var two = one
two.name = 'ping'
alert(one.name)
// 输出为'ping'
深拷贝不会拷贝引用类型的引用,而是将引用类型的值全部拷贝一份,形成一个新的引用类型,这样就不会发生引用错乱的问题,我们也可以多次使用同样的数据,而不用担心数据之间会有冲突
1、Object.assign() 或者 { …one }
- 只适合基础的数据类型
var one = { name: 'wang' }
var two = Object.assign({}, one)
two.name = 'ping'
alert(two.name)
// 输出为‘wang'
2、使用JSON的stringify和parse方法
- 不可以拷贝 undefined , function, RegExp 等等特殊类型
var one = {
name: 'wang',
info: {
age: 22
}
}
var two = JSON.parse(JSON.stringify(one))
two.info.age = 20
alert(one.info.age)
// 输出为 22