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

es6+最佳入门实践(5)的更多相关文章

  1. es6+最佳入门实践(14)

    14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...

  2. es6+最佳入门实践(12)

    12.class基础用法和继承 12.1.class基础语法 在es5中,面向对象我们通常写成这样 function Person(name,age) { this.name = name; this ...

  3. es6+最佳入门实践(10)

    10.Generator 10.1.Generator是什么? Generator函数是ES6提供的一种异步编程解决方案.在它的内部封装了多个状态,因此,又可以理解为一种状态机,执行Generator ...

  4. es6+最佳入门实践(9)

    9.Iterator和for...of 9.1.Iterator是什么? Iterator又叫做迭代器,它是一种接口,为各种不同的数据结构提供统一的访问机制.这里说的接口可以形象的理解为USB接口,有 ...

  5. es6+最佳入门实践(8)

    8.Promise 8.1.什么是异步? 要理解异步,首先,从同步代码开始说 alert(1) alert(2) 像上面的代码,执行顺序是从上到下,先后弹出1和2,这种代码叫做同步代码 alert(0 ...

  6. es6+最佳入门实践(7)

    7.set和map数据结构 7.1.什么是set? Set就是集合,集合是由一组无序且唯一的项组成,在es6中新增了set这种数据结构,有点类似于数组,但是它的元素是唯一的,没有重复 let st = ...

  7. es6+最佳入门实践(6)

    6.Symbol用法 6.1.什么是Symbol? Symbol是es6中一种新增加的数据类型,它表示独一无二的值.es5中我们把数据类型分为基本数据类型(字符串.数字.布尔.undefined.nu ...

  8. es6+最佳入门实践(4)

    4.函数扩展 4.1.参数默认值 默认参数就是当用户没有传值的时候函数内部默认使用的值,在es5中我们通过逻辑运算符||来实现 function Fn(a, b) { b = b || "n ...

  9. es6+最佳入门实践(3)

    3.数组扩展 3.1.扩展运算符 扩展运算符用三个点(...)表示,从字面上理解,它的功能就是把数组扩展开来,具体形式如下: let arr = [1, 2, 3]; console.log(...a ...

随机推荐

  1. DAG上dp思想

    DAG上DP的思想 在下最近刷了几道DAG图上dp的题目.要提到的第一道是NOIP原题<最优贸易>.这是一个缩点后带点权的DAG上dp,它同时规定了起点和终点.第二道是洛谷上的NOI导刊题 ...

  2. MVC中Model 的Key值不建议用非int型

    一次在开发中,key的值用了 byte型,结果插入第一条正常,第二条开始就出错,原因是用byte类型无法实现自动增加1,所以为了方便,建议使用 int型. public virtual byte bk ...

  3. table调整td宽度整理-完美解决--费元星前端

    个人整理例子,留下做个备份 最终重要的几句话 0.日期格式 format="ognl:dateFormat" <td align="center"> ...

  4. 学习SQLite基本语句

    SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非 ...

  5. 通过数据库恢复SharePoint网站

           SharePoint网站一般包含很多个数据库,最主要的有3个,分别是SharePoint_Admin_Content(管理中心数据库),SharePoint_Config(配置数据库)和 ...

  6. leetcode笔记--3 Niim game

    question: You are playing the following Nim Game with your friend: There is a heap of stones on the ...

  7. Anytime项目开发记录1

    关于Android APP 应用设计,我并没有接受过系统的学习. 下面,是按照我一直以来的方法来进行编辑. 由于在程序开始之前并没有画类图,这里简单的讲述一下程序是如何设计的. 自己实现了一个Appl ...

  8. YAGNI 声明

    1.YAGNI介绍 YAGNI 全名是 You aren't Going to Need It,在你设计草案的初稿中,应该努力使用最简单可以工作的事物,直至程序的某个方面要求你添加额外的特性. 2.思 ...

  9. 《python核心编程第二版》第2章习题

    2-1 略 2-1 略 2-2 (a)打印 结果是9 (b)9 (c)一样 (d)略 (e)略 2-3 略 2-4 (a) # /usr/bin/pythonraw_input() (b) # /us ...

  10. Flask Web开发从入门到放弃(一)

    第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...