The enhanced Object literals: ES6 has added some new syntax-based extensions to {} object literal for creating properties. (增强的对象字面量: 对于创建对象字面量的属性,ES6 新增了一些语法层面的扩展)

  1, Defining Properties(定义属性)

  ES6 provides a shorter syntax for asssinging the object properties to the values of the variables, which have the same name as the properties. (给一个属性赋一个变量值,如果变量名和属性名相同,ES6 提供了一个简洁的语法,可以省略变量名)

  In ES5, you have been doing this:

var x = 1, y = 2;
var object = {
  x: x,
  y: y
};
console.log(object.x); //output "1"

  In ES6, you can do it this way:

let x = 1, y = 2;
let object = { 
  x,
  y
}; console.log(object.x); //output "1"

  2, Defining methods(定义方法)

  ES6 provides a new syntax for define the methods on an object. Here is an example to demonstrate the new syntax: (ES6提供了简洁的方法来定义方法,省略function关键字)

let object = {
    myFunction(){
        console.log("Hello World")
    }
}

  This concise function allows the use of super in them, whereas the traditional methods of the objects don't allow the use of super(这种简洁的函数可以使用super,super在class 中用到). 

  3, The computed property names (计算属性名)

  The property names that are evaluated during runtime are called as the computed property names. An expression is usually resolved to find the property name dynamically. (在程序运行过程中才能确认的属性名叫动态属性名, 表达式通常来动态获取这个属性名)

  In ES5, the computed properties are defined in this way:

var object = {};
object["first"+"Name"] = "Eden";//"firstName" is the property name

//extract console.log(object["first"+"Name"]); //Output "Eden"

  Here, after creating the object, we attach the properties to the object. But In ES6, we can add the properties with the computed name while creating the objects. Here is an example: (ES5中,先创建一个对象,再添加属性,但在ES6中,创建对象的同时可以添加动态属性名)

let object = {
  ["first" + "Name"]: "Eden",
};
//extract console.log(object["first" + "Name"]); //Output "Eden"

Array Destructuring Assignment

  1, Using the rest operator(可以使用剩余操作符)

  We can prefix the last variable of the array destructuring expression using the " … " token. In this case, the variable is always converted into an array object, which holds the rest of the values of the iterable object, if the number of other variables is less than the values in the iterable object. Consider this example to understand it: (当使用剩余操作符的时候,当然只能是最后一个变量使用剩余操作符,这个变量就变成了数组,且如果我们声明的变量的个数小于数组中元素的个数,这个变量就会把数组中剩余的元素收集起来)

let [a, b, ...c] = [1,3,4,5,6] 

console.log(a)  // 1
console.log(b)  // 3
console.log(c) // [4,5,6]

  2, Default values(默认参数)

  While destructuring, you can also provide the default values to the variables if the array index is undefined. Here is an example to demonstrate this:(如果右边的数组的元素的个数少于我们声明的变量的个数,我们可以给变量赋一个默认值)

let [a, b, c=2] = [1,3];
console.log(c) // 2

  3, Using the destructuring assignment as a parameter (解构赋值用作函数参数)

  We can also use the array destrucuring expression as the function parameters for extracting the values of an iterable object, passed as argument into the function parameters. Here is an example to demonstrate this:

function myFunction([a, b, c = 3])
{
    console.log(a, b, c); //Output "1 2 3"
}
myFunction([1, 2]);

ES6 对象增强和结构赋值的更多相关文章

  1. ES6中的变量结构赋值

    小编的上一篇文章更新了es6中关于变量定义的问题,这篇文章继续来一些实用的干货,关于数组.对象的赋值问题.特别是在前后端合作项目的时候,对后端数据的拆分,还有就是对于函数的默认值的惰性赋值问题.看完下 ...

  2. JS ES6的变量的结构赋值

    变量的结构赋值用户很多 1.交换变量的值 let x = 1; let y = 2; [x,y] = [y,x] 上面的代码交换变量x和变量y的值,这样的写法不仅简洁,易读,语义非常清晰 2.从函数返 ...

  3. ES6 对象的解构赋值

    对象的解构赋值 解构不仅可以用于数组,还可以用于对象. let {foo,bar} = {foo:"aaa",bar:"bbb"}; console.log(f ...

  4. es6☞对象的解构赋值

    变量必须与属性同名 let {name, age} = {name: 'wang', age: 22}; console.log(name, age); //wang 22 let {name} = ...

  5. ES6 对象增强

    对象字面量语法扩展: 1, 属性初始化语法简写:给一个属性赋一个变量值,如果变量名和属性名相同,可以省略变量名和冒号,直接写属性名,js引擎在执行代码的时候,自动查找 和属性命名相同的变量并赋值. l ...

  6. 2、ES6结构赋值和模板字符串

    ES6允许按照一定的模式,从数组和对象中提取值,这被称为结构,即解开数据的结构 1.数组的解构赋值 let [a,b] = [1,2] let [a,b,c=100] = [1,2] //c的默认值为 ...

  7. es6对象字面量增强

    相对于ES5,ES6的对象字面量得到了很大程度的增强.这些改进我们可以输入更少的代码同时语法更易于理解.那就一起来看看对象增强的功能.对象字面量简写(Object Literal Shorthand) ...

  8. ES6 变量的结构赋值

    1.数组的解构赋值 a.基本用法:(‘模糊匹配’) let [a, b, c] = [1, 2, 3]; a b c b.嵌套数组结构例子: let [x, , y] = [1, 2, 3]; x y ...

  9. 一个令人兴奋的ES6星特性-结构赋值

    学完了前4节,今天我给大家带来的是一个令人兴奋的特性:解构赋值.这个章节代码片段有点偏多,不过可以放心,一点都不烧脑,还是老样子:简单易懂. 什么是解构赋值 按照一贯的套路,接下来的内容是解释:什么是 ...

随机推荐

  1. springmvc中的controller是单例的

    今天发现spring3中的controller默认是单例的,若是某个controller中有一个私有的变量a,所有请求到同一个controller时,使用的a变量是共用的,即若是某个请求中修改了这个变 ...

  2. HTML5探秘:用requestAnimationFrame优化Web动画

    本文转载自: HTML5探秘:用requestAnimationFrame优化Web动画

  3. 关于缺少nvToolsExt64_1.lib时的PhysX的处理

    我本人之所以缺少这个文件是因为我的PhysX如果你的PhysX是从UE4源代码中提取的,那么可能会出现如下错误,提示找不到nvToolsExt64_1.lib(本机是64bit的操作系统) 那就执行u ...

  4. ARM——操作系统—最小操作系统-开发板测试

    怀着激动的心情,打算弄到硬件上试试. 折腾了一整天.终于运行起来了. 需要设置IBRD和CR,以及寄存器. 希望大家也能顺利完成自己的开发板实验. 我畅想了一下,目前所有带串口的嵌入式ARM设备,都应 ...

  5. js Date 关于时间获取问题

    var date1 = new Date(); var timeFormat = { 'yyyy-mm-dd': date1 .toJSON().split('T')[0], //"2017 ...

  6. arm 2440 linux 应用程序 nes 红白机模拟器 第2篇 InfoNES

    InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES  的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame ()  Wo ...

  7. (转)漫谈SOA(面向服务架构)

    http://blog.csdn.net/luohuacanyue/article/details/12521699 面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模 ...

  8. Android系统中自定义按键的短按、双击、长按事件

    在项目中碰到这样的问题: 由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成: 1.单击 ...

  9. 获取WOED和EXCEL的公用方法

    1. 需要传入word地址 /// <summary> /// 获取WORD内容 /// </summary> /// <param name="docFile ...

  10. java中的23中设计模式(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...