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}
es6中的Object.assign的更多相关文章
- js中的Object.assign接受两个函数为参数的时候会发生什么?
缘由 今天看到一段代码 return Object.assign(func1, func2); 心生疑惑,为什么 Object.assign 的参数可以是函数? 于是有了下面这一堆东西,其实都是老生常 ...
- 在ES5实现ES6中的Object.is方法
ES6中对象的扩展里面添加了一个Object.is方法,用于比较两个值是否严格相等.内部计算与 === 行为基本一致.那么我们怎么在不支持这个方法的ES5中实现呢? 首先我们需要搞清楚两点,1:Obj ...
- es6新语法Object.assign()
1.介绍 Object.assign用于对象的合并,将源对象的所有可枚举属性复制到目标对象,只拷贝源对象自身的属性继承属性补考呗 Object.assign(target,source1,...)第一 ...
- ES6之Object.assign()详解
译者按: 这篇博客将介绍ES6新增的Object.assign()方法. 原文: ECMAScript 6: merging objects via Object.assign() 译者: Funde ...
- ES6学习--Object.assign()
ES6提供了Object.assign(),用于合并/复制对象的属性. Object.assign(target, source_1, ..., source_n) 1. 初始化对象属性 构造器正是为 ...
- es6 javascript对象方法Object.assign()
es6 javascript对象方法Object.assign() 2016年12月01日 16:42:34 阅读数:38583 1 基本用法 Object.assign方法用于对象的合并,将源对象 ...
- ES6深入浅出-11 ES6新增的API(上)-1.Object.assign
这些都是es6才有的 Object.assign 在a加上三个属性 分别是p1\p2\p3 以前是这么去加 b的三个属性p1.p2.p3就全部复制到a这个对象上了. 把后面的东西放到前面的东西上 两个 ...
- 【ES6学习笔记之】Object.assign()
基本用法 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = { a: 1 }; const sou ...
- ES6的Object.assign()基本用法
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). 例如: const target = {a:1}, const source1 ...
随机推荐
- 《第一本Docker书》学习笔记——第3章 Docker入门
3.1 确保Docker已经就绪 查看docker是否正常工作: sudo docker info 3.2 运行我们的第一个容器 现在,让我们尝试启动第一个Docker容器.我们可以使用docker ...
- 迅速生成项目-react-scripts
推荐指数:
- LODOP带空格和不带空格的字体对齐
有时候需要用到字体上下对齐,有些需要的文字较多,较少的文字需要加部分空格才能向上面的文字对齐.本文实际测试了一下字体对齐需要的空格.代码是在editplus里写的,该编辑软件里的字体首选项设置的是Co ...
- jquery weui 图片浏览器Photo Browser
jquery weui 图片浏览器Photo Browser 如何使用? 对应组件地址:http://jqweui.com/extends#swiper 先说说业务场景:类似朋友圈这样的布局效果,点击 ...
- upload-labs 上传漏洞靶场环境以及writeup
一个帮你总结所有类型的上传漏洞的靶场 https://github.com/c0ny1/upload-labs 靶场环境(基于phpstudy这个php集成环境) https://github.com ...
- 【深度学习与神经网络】深度学习的下一个热点——GANs将改变世界
本文作者 Nikolai Yakovenko 毕业于哥伦比亚大学,目前是 Google 的工程师,致力于构建人工智能系统,专注于语言处理.文本分类.解析与生成. 生成式对抗网络-简称GANs-将成为深 ...
- Recurrent neural network (RNN) - Pytorch版
import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # ...
- java多线程中篇(二) —— 线程的创建和Synchronized锁关键字
学习之前,先了解线程状态图 说明:线程共包括以下5种状态. 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread ...
- Java基础笔试练习(一)
1. 若在某一个类定义中定义有如下的方法: abstract void performDial( ); 该方法属于() ? A.本地方法 B.最终方法 C.静态方法 D.抽象方法 答案: D 解析: ...
- 十分钟快速入门 Python,看完即会,不用收藏!
本文以 Eric Matthes 的<Python编程:从入门到实践>为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章. ...