• 主页
  • 个人简介
    • 圣墨 photo

      圣墨

      一个爱折腾,有诗有远方的人

    • Learn More
    • Github
    • Cnblogs
    • Weibo
  • 文章
    • 所有文章
    • 所有标签
  • Html&Css
  • Javascript
  • 设计模式
  • 前端性能优化
  • 原生实现专题
  • 数据结构与算法
  • Book
  • 面试题
  • 前端工具
  • 随记

Object.assign实现

23 Sep 2019

Reading time ~1 minute

Object.assign

  • Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
  • 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。
  • 针对深拷贝,需要使用其他办法,因为 Object.assign()拷贝的是属性值。假如源对象的属性值是一个对象的引用,那么它也只指向那个引用。
 //取出源对象到目标对象中,相同键的会被覆盖
Object['myAssign'] = function (target) {
    for (let i = 1; i < arguments.length; i++) {
        let nextObj = arguments[i];
        if (nextObj != null) {
            for (let key in nextObj) {
                if (nextObj.hasOwnProperty(key)) {
                    target[key] = nextObj[key];
                }
            }
        }
    }
    return target;
}

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnTarget = Object.myAssign(target, source)
console.log(returnTarget)


javascript  微博  QQ  朋友圈