菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育

标题: 前端-王卓凡-20230605 [打印本页]

作者: 王卓凡    时间: 2023-6-13 18:17
标题: 前端-王卓凡-20230605
浅拷贝和深拷贝
区别:
浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;
深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。
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())






欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/) Powered by Discuz! X3.4