hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 前端开发 - 正文 君子好学,自强不息!

JS中深拷贝和浅拷贝区别?_WEB前端开发

2020-06-13前端开发ki4网5°c
A+ A-

photoshop内定的历史记录是多少?_WEB前端开发

Photoshop的内定历史记录是20条。记录条数可以修改,方法为:1、点击菜单栏中的“编辑”,在弹窗中点击“首选项”,打开“常规”面板;2、点击“性能”选项,可以看到默认的历史记录;3、点击历史记录状态旁边的箭头修改数值,点击确定即可。

JS中深拷贝和浅拷贝区别?

两者的区别在于是否是真正获取了一个对象的复制实体,而不是引用,深拷贝在计算机中开辟了一块内存地址用于存放复制的对象,而浅拷贝仅仅是指向被拷贝的内存地址,如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变。

深拷贝

最简单的方法就是

JSON.parse(JSON.stringify())
function deepCopy(o) {
    return JSON.parse(JSON.stringify(o))
}
var c = {
    age: 1,
    name: undefined,
    sex: null,
    tel: /^1[34578]\d{9}$/,
    say: () => {
        console.log('hahha')
    }
}
// { age: 1, sex: null, tel: {} }

需要注意的是:这种拷贝方法不可以拷贝一些特殊的属性(例如正则表达式,undefine,function)

用递归去复制所有层级属性

ps怎么将原有文字复制到另一位置?_WEB前端开发

方法:1、用ps打开图片按Ctrl+j复制图层;2、在菜单栏中点击“选择”中的“色彩范围”,用吸管工具吸取背景色,点确定;3、点击选框工具,在选区中右键,选择“选择反向”,按Ctrl+j复制选区,此时文字就被复制下来了,放入图片中移动即可。

function deepCopyTwo(obj) {
    let objClone = Array.isArray(obj) ? [] : {};
    if (obj && typeof obj == 'object') {
        for (const key in obj) {
            //判断obj子元素是否为对象,如果是,递归复制
            if (obj[key] && typeof obj[key] === "object") {
                objClone[key] = deepCopyTwo(obj[key]);
            } else {
                //如果不是,简单复制
                objClone[key] = obj[key];
            }
        }
    }
    return objClone;
}

浅拷贝

object.assign(target,source)

Object.assign 方法只复制源对象中可枚举的属性和对象自身的属性

如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性

Object.assign 会跳过那些值为 [null] null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),即没有对象被呈现(no object value is present)。它是 JavaScript 原始值 之一。") 或 undefined 的源对象。

推荐教程:《JS教程》


以上就是JS中深拷贝和浅拷贝区别?的详细内容,更多请关注ki4网其它相关文章!

你一定要知道的css属性值规范_WEB前端开发

本文来自css快速入门,文中为大家分享了几条css属性值规范,具有一定的参考价值,希望可以帮助到大家。css属性值规范:1、如果值是0,通常不使用单位;2、色值使用十六进制,尽量不使用rgb。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
JS中深拷贝和浅拷贝区别?_WEB前端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>