javascript浅拷贝


拷贝:准备一个新的数组/对象,把旧的内值复制过来
**********浅拷贝:把数组/对象第一层的值,复制到新的数组/对象中**********
**********浅拷贝使用场景?:修改数组/对象,影响另一个数组/对象,'砍断'它们的联系**********
**********如何实现浅拷贝?:for/for...in/扩展运算符/object.assign()对象用**********
①思考下面问题,希望用5秒钟作答
let a=100
let b=a
a=50
console.log(b)  //==>100
console.log(a)  //==>50
//基础类型=赋值,值的复制

②思考下面问题,希望用10秒钟作答01
let arr=['小明','小张']
let orr = arr
arr.push('onceweb')
console.log(orr)  //==>["小明", "小张", "onceweb"]
console.log(arr)  //==>["小明", "小张", "onceweb"]
//引用类型=赋值,内存地址赋值

②思考下面问题,希望用10秒钟作答02
let arr=['小明','小张']
let orr = [] //新数组
for (let i=0;i<arr.length;i++){
  orr.push(arr[i])
}
arr.push('onceweb')
console.log(orr)  //==>["小明", "小张"]
console.log(arr)  //==>["小明", "小张", "onceweb"]    

③思考下面问题,希望用10秒钟作答
let obj={
  name:'小明',
  age:25
}
let objonce=obj
obj.name='onceweb'
console.log(objonce.name) //==>onceweb
console.log(obj.name)  //==>onceweb
//引用类型=赋值,内存地址赋值

④对象拷贝01
let obj={
  name:'小明',
  age:25
}
objonce = {} //新申请一个空间对象
for(let key in obj){
  objonce[key] = obj[key]
}
obj.name = "onceweb"
console.log(objonce.name)  //==>小明
console.log(obj.name)  //==>onceweb

⑤对象拷贝02==》es6
let obj={
  name:'小明',
  age:25
}
objonce = {...obj} //新对象赋值---扩展运算符
obj.name = "onceweb"
console.log(objonce.name)  //==>小明
console.log(obj.name)  //==>onceweb

⑥对象拷贝03==》es5
let obj={
  name:'小明',
  age:25
}
objonce = Object.assign({},obj) //新对象赋值---扩展运算符
obj.name = "onceweb"
console.log(objonce.name)  //==>小明
console.log(obj.name)  //==>onceweb
posted @ 2021-07-10 17:11  onceweb  阅读(29)  评论(0)    收藏  举报