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}
  • 相关阅读:
    windows 物理内存获取
    windbg-.process切换进程(内核)
    cnetos 6.7彻底解决vmware NAT网络问题
    优秀的博客链接地址
    使用Spring MVC统一异常处理实战
    active mq 配置
    socket demo程序
    flume 中的 hdfs sink round 和roll
    软链接与硬链接
    flume A simple example
  • 原文地址:https://www.cnblogs.com/chenzhiyu/p/8695408.html
Copyright © 2011-2022 走看看