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}
  • 相关阅读:
    【poj3294】 Life Forms
    【poj3415】 Common Substrings
    【poj3693】 Maximum repetition substring
    【bzoj2034】 2009国家集训队—最大收益
    【bzoj4198】 Noi2015—荷马史诗
    【poj2406】 Power Strings
    【ural1297】 Palindrome
    【spoj SUBST1】 New Distinct Substrings
    【poj1743】 Musical Theme
    django rest framework serializers小结
  • 原文地址:https://www.cnblogs.com/chenzhiyu/p/8695408.html
Copyright © 2011-2022 走看看