电梯 原文 https://www.jianshu.com/p/5f40c43c6f85

重点:

 遍历map结构

正则扩展

at相当于charAt() ,可以识别中文
normarize()
includes() , startsWith() , endsWith()
repeat(n) //n为重复次数
padStart, padEnd 字符串补全

========

Math

Math.trunc(4.1) //去除小数部分 等同:向下取整
Math.sign() //判断正负数/0
Math.cbrt() //立方根
Math.fround() //返回数值的单精度浮点数形式

========

1 对象转数组

//es5 对象转数组:
var arr1 = [].slice.call(arrayLike);
//es6 对象转数组,适用于数组对象和可遍历对象Map,Set
let arr2 = Array.from(arrayLike);

2 Array.of(值1,值2,值3) 将一组值转换为数组
3 copyWithin(target,start,end)

4 find(回调函数)返回原值 、findIndex(回调函数) 返回索引

5 fill( ) 全部填充 覆盖

6 entries(),keys()和values()——用于遍历数组
7
includes() 数组是否包含给定的值

解构

解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。

解构函数的用途

1 交换变量值

[x,y] = [y,x]

2 从函数返回多个值

var {foo,bar} = example( );

3 函数参数的定义
4 提取Json数据

var jsonData = { id: 42, status: "OK", data: [867, 5309]};
let { id, status, data: number } = jsonData;
console.log(id, status, number);// 42, "OK", [867, 5309]

5 函数参数的默认值
6 遍历map结构

var map = new Map( );
map.set('first','hello');
map.set('second','hello');
map.set('third','hello');
map.set('fourth','hello');
for(let[key,value] of map){
//获取到键值对
}
for(let [key] of map){
//获得键名
}
for(let [,value] of map){
//获得键值
}

7 输入模块的指定方法

const { SourceMapConsumer, SourceNode } = require("source-map");

正则扩展

at相当于charAt() ,可以识别中文
normarize()
includes() , startsWith() , endsWith()
repeat(n) //n为重复次数
padStart, padEnd 字符串补全

数值扩展

 
屏幕快照 2016-10-05 08.02.35.png

二进制 0b, 八进制0o
Number.isInteger(25.0) // true
Number.EPSILON

function withinErrorMargin (left, right) {
return Math.abs(left - right) < Number.EPSILON;
}
withinErrorMargin(0.1 + 0.2, 0.3)
// true
withinErrorMargin(0.2 + 0.2, 0.3)
// false

Math.trunc(4.1) //去除小数部分
Math.sign() //判断正负数/0
Math.cbrt() //立方根
Math.fround() //返回数值的单精度浮点数形式
...
还有一些关于对数方法,三角函数方法
指数运算符: a**=2; // a= a * a;

数组扩展

 
屏幕快照 2016-10-05 08.26.50.png

1 对象转数组

//es5 对象转数组:
var arr1 = [].slice.call(arrayLike);
//es6 对象转数组,适用于数组对象和可遍历对象Map,Set
let arr2 = Array.from(arrayLike);

2 Array.of(值1,值2,值3) 将一组值转换为数组
等价于es5
var arr1 = [].slice.call(arguments);
3 copyWithin(target,start,end)
target(必需):从该位置开始替换数据。
start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。

[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5]

4 find(回调函数)

//返回符合条件的值
[1, 4, -5, 10].find((n) => n < 0) // -5

findIndex

//返回符合条件的第一个索引
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
})
// 2

5 fill( ) 使用给定值填充一个数组
6 entries(),keys()和values()——用于遍历数组
7 includes() 数组是否包含给定的值

函数扩展

 
屏幕快照 2016-10-05 08.52.52.png

1 函数参数设置了默认值,length失效
2 rest参数 ...变量名 用于获取函数多余的参数
3 ...替换apply

// ES5的写法
function f(x, y, z) {
// ...
}
var args = [0, 1, 2];
f.apply(null, args);
// ES6的写法
function f(x, y, z) {
// ...
}
var args = [0, 1, 2];
f(...args);
//字符串转数组
[...'hello'] // ["h","e","l","l","o"]

4 函数的name属性
5 箭头函数
箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作Generator函数。
上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。
6 函数绑定
obj::bind() 方法绑定在对象上
7 尾调用

function outter(x){
return inner(x);
}

8 尾递归

对象扩展

 
屏幕快照 2016-10-05 09.32.21.png

Object.is
就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

Object.assign
方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
浅拷贝

ES6一共有5种方法可以遍历对象的属性。

(1)for...in
for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。
(2)Object.keys(obj)
Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol属性。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。
以上的5种方法遍历对象的属性,都遵守同样的属性遍历的次序规则。
首先遍历所有属性名为数值的属性,按照数字排序。
其次遍历所有属性名为字符串的属性,按照生成时间排序。
最后遍历所有属性名为Symbol值的属性,按照生成时间排序。

Symbol

Proxy和Reflect

Set和Map

Iterator和 for...of

Generator函数

function* generator(){
yield 1;
yield 2;
yield 3;
return 4;
}
generator.next() // { value: 1, done: false }
generator.next()// { value: 2, done: false }
generator.next()// { value: 3, done: false }
generator.next()// { value: 4, done: true }

Promise对象

一个用Promise对象实现的Ajax操作的例子。

var getJSON = function(url) {
var promise = new Promise(function(resolve, reject){
var client = new XMLHttpRequest();
client.open("GET", url);
client.onreadystatechange = handler;
client.responseType = "json";
client.setRequestHeader("Accept", "application/json");
client.send();
function handler() {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
} }; });
return promise
;};
getJSON("/posts.json")
.then(function(json) {
console.log('Contents: ' + json);
}, function(error) {
console.error('出错了', error);
});

getJSON是对XMLHttpRequest对象的封装,用于发出一个针对JSON数据的HTTP请求,并且返回一个Promise对象。需要注意的是,在getJSON内部,resolve函数和reject函数调用时,都带有参数。

异步操作和Async

Class

Decorator 装饰器

作者:Bookish倩宝
链接:https://www.jianshu.com/p/5f40c43c6f85
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

es6 | 新增语法 | 总结的更多相关文章

  1. ECMAScript简介以及es6新增语法

    ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...

  2. ES6新增语法和内置对象(let,const, Array/String/Set 扩展方法(解构赋值,箭头函数,剩余参数))

    1.let ES6中新增的用于声明变量的关键字. let 声明的变量只在所处于的块级有效. 注意:使用 let 关键字声明的变量才具有块级作用域,var 关键字是不具备这个特点的. 1. 防止循环变量 ...

  3. 【ES6新增语法详述】

    目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 "@ ES6新增了关于变 ...

  4. ES6新增语法(一)——let、const、var的区别

    ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...

  5. 面向对象编程-终结篇 es6新增语法

    各位,各位,终于把js完成了一个段落了,这次的章节一过我还没确定下面要学的内容可能是vue也可能是前后端交互,但无论是哪个都挺兴奋的,因为面临着终于可以做点看得过去的大点的案例项目了,先憋住激动地情绪 ...

  6. es6新增语法之`${}`

    这是es6中新增的字符串方法 可以配合反单引号完成拼接字符串的功能 1.反单引号怎么打出来?将输入法调整为英文输入法,单击键盘上数字键1左边的按键. 2.用法step1: 定义需要拼接进去的字符串变量 ...

  7. ES6新增语法(四)——面向对象

    ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...

  8. ES6新增语法(三)——面向对象

    ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...

  9. ES6新增语法(二)——函数和参数

    箭头函数 箭头函数:将原来函数的function关键字和函数名都删掉,并使用"=>"连接参数列表和函数体. 箭头函数语法: (参数1,参数2)=>{ 函数体 } 注意点 ...

  10. ES6新增语法(七)——async...await

    什么是async async的意思是"异步",顾名思义就是有关异步操作的关键字,async 是 ES7 才有的,与我们之前说的Promise.Generator有很大的关联. 使用 ...

随机推荐

  1. mapReduce 大数据离线分析

    数据分析一般分为两种,一种是在线一种是离线 流程: 一般都是对于日志文件的采集和分析 场景实例(某个电商网站产生的用户访问日志(access.log)进行离线处理与分析的过程) 1.需求: 基于Map ...

  2. json对象与string相互转换教程

    一.说明 1.1 背景说明 json对象与string相互转换,这东西想写了很多次,但总觉得网上教程比较成熟,所以之前每次都放弃了.但今天又被string转json对象折腾了半天,实在受不了,所以还是 ...

  3. Remote Desktop突然不能用了 “This could be due to CredSSP encryption oracle remediation”

    一段时间没有用RDP去连远程的Windows主机,某一天突然发现用不了了. 错误信息如下: An authentication error has occurred. The function req ...

  4. SpringCloud Stream使用案例

    官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架. 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互 ...

  5. SQL Server 中获取所有的用户表、用户视图的信息

    直接贴代码了: 用户表: SELECT s.Name,Convert(varchar(max),tbp.value) as Description FROM sysobjects s AND (tbp ...

  6. 【题解】古代猪文 [SDOI2010] [BZOJ1951] [P2480]

    [题解]古代猪文 [SDOI2010] [BZOJ1951] [P2480] 在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心 ...

  7. excel查找定位操作(for lutai)

    产成品出库的单价要根据订单号和存货编码引用产成品入库的单价 方法一:使用Index 和Match =INDEX(产成品入库!I2:P13    ,IF( ) ,7) 方法二:使用vlookup ,首先 ...

  8. Bagging 和RF的区别

    跑训练无聊看了看别人的面经,发现自己一时半会答不上来,整理一下. 一.Bagging介绍 先看一个Bagging的一个概念图(图来自https://www.cnblogs.com/nickchen12 ...

  9. php 无线分类 根据子级找父级

    public function transform($item){ //查询数据 $position = AdminAccess::where('id',$item)->first(); $re ...

  10. C#基础语法,快速上収C#

    C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...