zoukankan      html  css  js  c++  java
  • es6中的Object.assign

    在写一些插件的时候,我们会经常遇到所传参数需要合并默认参数,并覆盖相同参数的情况,在jQuery中我们可以使用$.extend(),在原生中要想使用得自己封装,

    但自从es6出现了Object.assign,我们就方便多了

    var obj = {
                name:"a",
                age: 28,
                gender: "male"
            };
    
            var defaultObj = {
                name: "佚名",
                age: 18
            }
            var res = Object.assign(defaultObj , obj);    
         console.log(res);  //{name: "a", age: 28, gender: "male"}

    可以看到上面的代码已经实现了我们的需求,但注意这里有一些坑,我们来看下面的代码

    var obj = {
                name:"a",
                age: 28,
                gender: "male"
            };
    
            var defaultObj = {
                name: "佚名",
                age: 18
            }
            var res = Object.assign(defaultObj , obj);    
          console.log(res);  //{name: "a", age: 28, gender: "male"}
             console.log(obj);    //{name: "a", age: 28, gender: "male"}
             console.log(defaultObj);   //{name: "a", age: 28, gender: "male"}

    可以看到我们同时也污染了defaultObj的值,那么怎么解决这样尴尬的局面呢,解决方案其实也很简单,代码如下

    var obj = {
                name:"a",
                age: 28,
                gender: "male"
            };
    
            var defaultObj = {
                name: "佚名",
                age: 18
            }
            var res = Object.assign({},defaultObj , obj);    
          console.log(res);  //{name: "a", age: 28, gender: "male"}
             console.log(obj);    //{name: "a", age: 28, gender: "male"}
             console.log(defaultObj);   //{name: "佚名", age: 18}
  • 相关阅读:
    在不申请第三方变量的情况下交换a和b
    指针(pointer)的使用
    数组和链表(arrary & linkedlist)
    Python的学习计划
    Python——函数
    Python——文件操作
    Python——深浅Copy
    我发现的新大陆——好用的~
    我发现的新大陆——好吃儿的
    我发现的新大陆——好玩儿的
  • 原文地址:https://www.cnblogs.com/chenzhiyu/p/8695408.html
Copyright © 2011-2022 走看看