博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6中对对象的扩展
阅读量:7098 次
发布时间:2019-06-28

本文共 1485 字,大约阅读时间需要 4 分钟。

  ES6允许直接写入变量和函数作为对象的属性和方法。这样的书写更加简洁。

  ES6允许在对象中只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。

function f(x , y){  return {x ,y};  }f(1,2)// Object {x:1,y:2}function getPoint(){  var x=1;  var y=10;  return {x,y};  }getPoint()//{x:1,y:10}

  js语言定义对象的属性有两种方法。obj.foo=true;obj['a']=123;1直接用标识符作为属性名;2是用表达式作为属性名,这时要将表达式放在方括号内。但是,如果使用字面量方式定义对象,在ES5中只能使用方法一定义属性。

  ES6允许字面量定义对象时用表达式作为对象的属性名,即把表达式放在方括号内。

let propKey='foo';let obj={  [propKey]:true,  ['a'+'bc']:123,    }var lastWord='last word';var a={  'first word':'hello',  [lastWord]:'world'    }

  Object.is用来比较两个值是否严格相等。它与严格比较运算符(===)的行为基本一致。Object.is('foo','foo')//true Object.is({},{})//false 不同之处只有两个:一是+0不等于-0,二是NaN等于自身。Object.assign方法用来将源对象的所有可枚举属性复制到目标对象。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误。

var target={a:1};var source1={b:2};var source2={c:3};Object.assign(target,source1,source2);target//{a:1,b:2,c:3}//注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,//则后面的属性会覆盖前面的属性。var target={a:1,b:1};var source1={b:2,c:2};var source2={c:3};Object.assign(target,source1,source2);target//{a:1,b:2,c:3}

  注意,Object.assign可用于处理数组,但是会将其视为对象。

  Object.assign([1,2,3],[4,5])//[4,5,3]

  Obeject.assign把数组视为属性名为0、1、2的对象,因此目标数组的0号属性4覆盖了原数组的0号属性1.

  

  对象的扩展运算符

  Rest参数用于从一个对象取值,相当于将所有可遍历但尚未被读取的属性,分配到指定的对象上。所有的键及其值都会复制到新对象上。rest参数的复制是浅复制,即如果一个键的值是复合类型的值,那么rest参数复制的是这个值的引用,而不是这个值的副本。

  Rest参数不会复制继承自原型对象的属性。

 

  扩展运算符用于取出参数对象的所有可遍历属性,复制到当前对象中。这等同于使用Object.assign方法。

  扩展运算符可用于合并两个对象。let ab={...a,...b};

转载于:https://www.cnblogs.com/wlxll/p/9329434.html

你可能感兴趣的文章
恭喜CocoStudio 1.5和Mac版本发布
查看>>
Exchange server 2010系列教程之二 图文安装Exchange 2010
查看>>
玩转CVSNT+TortoiseCVS 版本控制系统(图解)(上)
查看>>
利用CSVDE命令实现域用户账户的批量添加示例
查看>>
解决 Exchange2013提示“出现意外错误,无法处理您的请求”,无法打开OWA和ECP
查看>>
CCNA学习指南(第五版)下载地址
查看>>
LightSwitch中的权限
查看>>
将计算机退出域 脚本
查看>>
windows多线程同步--临界区
查看>>
Linux系统真正的优势以及学习方法
查看>>
python 遗传算法精简版
查看>>
$(this)和this 区别
查看>>
R语言学习笔记:SQL操作
查看>>
ios33--线程安全
查看>>
elasticsearch 索引搜索和索引性能优化配置——思路:去掉不必要的数据,减小数据的磁盘空间占用,同时提升性能...
查看>>
技术研究与工程开发
查看>>
用df命令显示磁盘使用量和占用率。
查看>>
MonoRail学习笔记二十:资源文件的使用和多语言支持
查看>>
jquery mobile常用的data-role类型介绍
查看>>
Windows Mobile下使用Native C++开发日志类
查看>>