探寻Object.assign内部的奥秘
时间:2019-06-18
本文章向大家介绍探寻Object.assign内部的奥秘,主要包括探寻Object.assign内部的奥秘使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有写过js插件的童鞋会知道我们在调用一些别人写好的插件时候,我们传入的参数调用的时候,其实在插件内部也会定义默认的参数,下面那我写过的一个移动端轮播插件为例子说明:
new mslider({ slideCell:".wrap", titCell:".hd ul", mainCell:".box", interTime:3000, autoPlay:false, //自动播放 autoPage:true,//自动分页 });
这是我们在外部调用的参数,已经存在的属性会替换掉我们插件内部的属性,当我们什么都不传入的情况下,就会走默认参数。下面贴出之前写好的插件部分代码,方便大家理解。
var mslider=function(option){ //设置默认参数 this.defaultopt={ slideCell:".wrap", mainCell:".box", interTime:1000, autoPlay:false//自动播放 } //判断传入的opts是否有默认参数中的值,如果默认参数值不存在opts中 //就把默认参数加进opts中,这样就不会把默认参数修改了 option=option||this.defaultopt; for(var k in this.defaultopt){ if(!option[k]){ option[k]=this.defaultopt[k]; } } this.option=option; }
其实这就是实现传入的对象和定义的默认参数对象的一个合并操作,如果不传入这个参数,就会把默认的参数追加上去,当然你如果使用jquery开发插件的话,可以使用jquery提供的静态方法$.extend;不过我要说的是es6提供的一个新方法Object.assigin.
var a={a:1,b:1}; var b={c:1,d:1}; var newObj=Object.assign({},a,b); console.log(newObj)//{a: 1, b: 1, c: 1, d: 1}
传入的第一个参数为目标对象,将后面所有传入的对象的可枚举属性复制到目标对象上面,需要注意的是后面如果有同名属性的话,会直接覆盖掉之前的属性。
var a={a:1,b:1}; var newObj=Object.assign(a); console.log(newObj==a) //true
如果只传入一个目标对象的话,直接返回自己。需要注意的是目标函数不能是null或者undefined,否则会报错
原文地址:https://www.cnblogs.com/shentao11023/p/11045021.html
- testNG java.net.SocketException: Software caused connection abort: socket write error
- MyBatis.Net 学习手记
- 基于JavaScript 声明全局变量的三种方式详解
- 网页基础篇之如何制作简单的静态网页
- Mybatis.Net 整合 ODP.NET Managed
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- 知道这几点,用微信小程序留住海量客户不是问题
- C#:DataTable映射成Model
- jenkins 多选框
- Oracle:ODP.NET Managed 小试牛刀
- C#:Func的同步、异步调用
- Python之路-day6
- hadoop1.2.1伪分布模式配置
- 有了它们,真的能让孩子赢在起跑线上吗?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法