zoukankan      html  css  js  c++  java
  • JS浅拷贝和深拷贝

    /**
     * 浅拷贝
     * @type {{address: {name: string}, sex: number, name: string}}
     */
    let person1 = {
        sname: 'tommy'
    }
    
    let person2 = person1;
    person2.sname = 'hello,tommy!'
    console.log(person2.sname) // hello,tommy!
    console.log(person1.sname)  //hello,tommy!
    
    /**
     *  深拷贝
     * @type {{address: {name: string}, sex: number, name: string}}
     */
    let person = {
        name: 'jack',
        sex: 6,
        address: {
            name: '陕西西安'
        }
    }
    
    var person3 = deepCopy(person);
    person3.address.name = '新疆乌鲁木齐'
    console.log(person3)  // { name: 'jack', sex: 6, address: { name: '新疆乌鲁木齐' } }
    console.log(person)   // { name: 'jack', sex: 6, address: { name: '陕西西安' } }
    
    function deepCopy(obj = {}) {
        let result
        if (typeof obj != "object" || obj == null) {
            return obj
        }
    
        if (obj instanceof Array) {
            result = []
        } else {
            result = {}
        }
    
        for (let key in obj) {
            result[key] = deepCopy(obj[key])
        }
    
        return result
    }
    
    
  • 相关阅读:
    编写登陆认证程序
    模拟实现一个ATM + 购物商城程序
    三级菜单
    12 场景制造
    11 Unity Editor界面
    3.7练习题
    Coolite 弹窗妙用
    Nginx反向代理 实现Web负载均衡
    MySQL 架构
    Lnmmp
  • 原文地址:https://www.cnblogs.com/yangxuming/p/12820808.html
Copyright © 2011-2022 走看看