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}
  • 相关阅读:
    Unity物理系统随记
    Unity相机跟随小结
    unity制作赛车游戏
    动态编程
    C#-特性,反射,动态编程
    BASE64加解密
    idea快捷键
    git安装和git命令:全局设置用户名邮箱配置
    基于Node.js+MySQL开发的开源微信小程序商城(微信小程序)部署环境
    微信小程序开发入门(一),Nodejs搭建本地服务器
  • 原文地址:https://www.cnblogs.com/chenzhiyu/p/8695408.html
Copyright © 2011-2022 走看看