我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

前端-王卓凡-20230605

[复制链接]
王卓凡 发表于 2023-6-13 18:17:04 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
浅拷贝和深拷贝
区别:
浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;
深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。
jquery和js的实现。
浅拷贝
var obj1 = {
  name: 'james',
  age: 17,
  address: ['西安', '北京']
}
var obj2 = {}

for (var k in obj1) {
  obj2[k] = obj1[k]
}
obj2.address[0] = '长安'
console.log(obj2)
console.log(obj1)


// 或者
Object.assign(obj2, obj1)
console.log(obj2)
深拷贝//方式一
let obj1 = {
  name: 'james',
  age: 17,
  address: ['西安', '北京'],
  friends: {
    uname: 'pull',
    ages: 20
  }
}
let obj2 = {}
obj2 = JSON.parse(JSON.stringify(obj1))
obj2.address[0] = '长安'
console.log(obj1)
console.log(obj2)



//方式二
var obj1 = {
  name: 'james',
  age: 17,
  address: ['西安', '北京'],
  friends: {
    uname: 'pull',
    ages: 20
  }
}
var obj2 = {}
function deepCopy(obj1, obj2) {
  for (var k in obj1) {
    var item = obj1[k]
    // 数组
    if (item instanceof Array) {
      obj2[k] = []
      deepCopy(item, obj2[k])
      // 对象
    } else if (item instanceof Object) {
      // 基本类型
      obj2[k] = {}
      deepCopy(item, obj2[k])
    } else {
      obj2[k] = obj1[k]
    }

  }
}
deepCopy(obj1, obj2)
obj2.friends.ages = 200
console.log(obj2)
console.log(obj1)ES6箭头函数var fn = function () {
    console.log('hello')
}
fn()


// 箭头函数写法
var fn = () => {
    console.log('hello')
}
fn()//小括号可以省略 - 只有一个形参的时候
var fn = function (a) {
    console.log(a)
}
// 箭头函数写法
var fn = a => {
    console.log(a)
}
fn(10)//大括号可以省略 - 代码块只有一行代码/只有返回值
var fn = function (a) {
    console.log(a)
}
// 箭头函数写法
//只有一行代码
var fn = a => console.log(a)
fn(10)
// 有返回值,return也可以省略
var fun = () => 'hello'
console.log(fun())

回复

使用道具 举报

关注0

粉丝0

帖子47

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026