javascript浅拷贝(面试高频)

浅拷贝:创建一个新对象,并复制原有对象的基本类型的值

1.Object.assgin(target,source)

let target = [1,2,3]
let source = []
Object.assgin(target,source)

2.扩展运算符{...targetObj} / [...targetArr]

let target = [1,2,3]
let source = [...target]

3.arr.concat()

let target = [1,2,3]
let source = target.concat()

4.arr.slice(begin,end)

let target = [1,2,3]
let source = target.slice()

注:后两者仅用于数组

手写浅拷贝函数

const shaloowClone=(target)=>{
    if(typeof target === 'object' && target !== null){//判断数据类型
        const cloneTarget = Array.isArray(target)?[]:{}//判断是否为数组,创建新变量
        for(let prop in target){//变量原对象
            if(target.hasOwnProperty(prop)){ //判断原对象是否拥有该属性
                cloneTarget[prop] = target[prop] //新对象属性复制
            }
        }
        return cloneTarget
    }else{
        return target
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 就得先从基本数据类型和引用数据类型开始了。 基本数据类型与引用数据类型 基本数据类型 string、number、...
    清儿阿阅读 272评论 0 0
  • 深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。 深拷贝 深拷贝复制变量值,对于非基...
    a91afcace9ee阅读 258评论 0 0
  • 1、数据类型 说起拷贝,就不得不提起js的数据类型了,因为深拷贝和浅拷贝的核心就在于不同的数据类型在内存中存储的地...
    团子哒哒阅读 2,577评论 0 3
  • 前言 文章开始之前,让我们先思考一下这几个问题: 为什么会有浅拷贝与深拷贝 什么是浅拷贝与深拷贝 如何实现浅拷贝与...
    编程小世界阅读 275评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,613评论 28 53