5.对象扩展

5.1.对象简写

在es5中,有这样一种写法

var name = "xiaoqiang";
var age = 12;
var obj = {
name : name,
age : age
}

在es6中,我们可以简写成这样一种形式

let name = "xiaoqiang";
let age = 12;
let obj = {
name,
age
}

以上只是属性的简写,如果有方法应该怎么写呢?首先我们来回顾一下es5中的写法

var obj = {
show: function(){
alert(1)
}
}

在es6中我们可以简写成下面的形式

var obj = {
show(){
alert(1)
}
}

5.2.属性名表达式

属性名表达式意思就是说在es6中可以把属性写成一个表达式的形式,在es5中我们写属性名的时候,都是固定不变的

var obj = {
name: "xiaoqiang",
age: 19
}
//其中name和age是不变的固定写法

在es6中,支持属性名用一个表达式来表示,属性名可以是一个变量

let a = 'username';
let b = 'age'; let obj = {
[a]:"admin",
[b+'1']:19
}
console.log(obj)

5.3.扩展运算符

扩展运算符我们在前面接触过,用三个点表示(...),ES2018 将这个运算符引入了对象。

let {a,b,...c} = {c:1,b:2,a:3,d:4};
console.log(a, b, c) //3 2 {c: 1, d: 4}

5.4.Object新增方法

  1. Object.is()

这个方法用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致

console.log(Object.is('a', 'a'))  //true
console.log(Object.is({},{})) //false //和(===)不一样的是 解决NaN不等于自身的问题
console.log(NaN === NaN) //false
console.log(Object.is(NaN, NaN))
  1. Object.assign()

这个方法用来合并对象

let obj1 = {a: 1};
let obj2 = {b: 2};
let obj3 = {c: 3};
console.log(Object.assign({}, obj1, obj2, obj3)) //{a: 1, b: 2, c: 3}

视频教程地址:http://edu.nodeing.com/course/50

最新文章

  1. AtomicBoolean介绍与使用
  2. jsonp使用,spring4.x对jsonp的支持
  3. 二项分布和Beta分布
  4. .NET开发实战1-军队未出,粮草先行。
  5. 【java】: 操作excel2007/2003
  6. Centos6.5 下安装PostgreSQL9.4数据库
  7. npm报错Error: ENOENT, stat 'D:\NodeLearn\node-global'
  8. 排序算法 & 迷宫的深度, 广度优先
  9. 如何在Java 8中愉快地处理日期和时间
  10. 在Ubuntu 14.04 64bit上安装numpy和matplotlib库
  11. git reflog 和git log :no branch git 提交方式
  12. C++之内部类(嵌套类)与外部类及友元
  13. PC-XP系统忘记密码怎么办
  14. php设计模式之简单工厂模式
  15. Oracle时间戳
  16. JAVA基础知识总结:九
  17. 最长周长三角形 O(nlogn)
  18. spring 注解模式 详解
  19. Jquery触发Change事件
  20. 【leetcode 简单】 第一百五十题 两个列表的最小索引总和

热门文章

  1. 集成activiti到现有项目中
  2. Java常考面试题
  3. mcrouter facebook 开源的企业级memcached代理
  4. Eclipse+APKTool动态调试APK
  5. 第十二篇 Python函数之全局变量&局部变量&递归函数
  6. Unity动态换装之Spine换装
  7. python------- IO 模型
  8. [POJ3585]Accumulation Degree
  9. LeetCode 36——有效的数独
  10. cocos2d-x 显示中文字符和解析XML文件 转载