ES6总结文档

数组的拓展方法:

arr.keys()方法: 获取数组的所有索引值 chrome没有实现

arr.values()方法: 获取数组的所有成员值chrome没有实现

arr.entries()方法:

作用:   获取数组所有索引值以及成员值

返回:  数组迭代器对象

使用for fo方法遍历此对象可获得数组

第一个成员表示索引值

第二个成员表示成员值

数组迭代器特征:

遍历数组迭代器内容, 只能使用for of方法,  for循环,  for in无效

可以通过next方法包含每一个值的对象

数组迭代器只能被获取一次

对象的复制:

jq中的extend(any)方法:

作用: jQuery中复制对象的方法

参数: @any    如果是true表示深复制(此时后面的参数表示需要复制的对象,可多个),   如果是对象表示浅复制

返回值:  复制的对象(如果复制的是多个对象,  多个对象会合并到一起)

window.assign(obj1,  obj2...)方法:   (浅复制)

作用: 扩展对象, 将别的对象的值复制给目标对象

参数:

@obj1    目标对象

@obj2... 被复制的对象(可多个)   

返回值:  拓展后的目标对象(@obj1), 若有同名属性, 后面的覆盖前面的

Symbol数据类型:      ES6新增数据类型

应用:   为一个库添加属性、方法,  是很危险的,原因新增的属性、方法可能会替换掉原有的属性或者方法,原理就是名称可能会同名,es6新增symbol数据类型是为了解决这个问题,通过symbol新增的属性是永远不会同名的

使用Symbol类型的值不会被覆盖:

语法: var  key =  Symbol(value)

注意:  一旦通过Symbol类型为对象添加属性, 访问这个属性值, 只能通过变量名访问

例如:  {Symbol(value): "red"},   

访问属性值只能使用obj[key],  key表示Symebol(value)的变量名

obj[Symbol(value)] 这种写法访问不到该属性

代理对象:

应用:   不允许用户直接访问一些隐私数据, 而是通过代理对象访问, 通过代理对象屏蔽一些危险操作.

创建代理对象: new Proxy(obj, configObj)    

@obj  被代理的对象

@dealObj   处理代理对象的接口方法对象

get(obj,  key)    用户获取对象属性时的处理方法

@obj    被代理的对象

@key    获取的属性名

set(obj, key, value)   用户设置对象属性时的处理方法

@obj   被代理的对象

@key   被设置的对象属性名称

@value  用户设置的属性值 

默认参数:

ES6允许我们在参数中使用赋值符号,定义默认参数

例如:   function drawColor(color = 'green'){}

获取剩余参数:

应用:  箭头函数中不能使用arguments,  可以使用...arg语法代替

语法: ...arg

例如:  function  drawColor(color1, color2, ...color){}

前面的参数可以正常使用

获取的color变量是一个数组

解构:

解构对象:

作用:  直接使用变量名调用对象的属性

语法: var {属性名称} = 对象

大括号内的属性名称必须要与对象的属性名称一致

例如:  var {Model, Controller, View} = Backbone;

解构数组:

作用: 可以将一个数组的每个成员转化成函数参数

语法:  var [变量1, 变量2, ...变量们] = 数组

每个变量表示一个成员

如果想获取所有剩余成员可以使用...语法,获得的是一个数组

例如: var [color1, color2, ...color] = ["red", "green", "blue", "pink"] ;

箭头函数:

定义语法:  () => {}    

() 内定义参数集合

=>箭头

{} 函数体

特征:

不能使用arguments

作用域和箭头函数所在的作用域一致

不能作为构造函数使用(因为第二条)

省略:

只有一个参数, 小括号可以省略

函数体只有返回值, 大括号可以省略, return可以省略

更改作用域:  只能更改箭头函数所在的作用域, 来达到更改箭头函数作用域的目的

Set对象:

ES6中聚合类数据一共有四种: 数组、对象、set对象、map对象

创建set对象:

语法:new Set(arr);

参数:  @arr是一个数组, 会自动对数组中每一个成员去重

返回:  set实例化对象

add(any)方法:

作用:  为set对象添加成员

参数:  只能接收一个参数, 表示添加的成员,  会自动去重

返回值:   set对象, 因此可以链式调用

delete(any)方法:

作用:  删除set对象的成员

参数: 只能接收一个参数, 表示删除的成员

返回值:  布尔值, true表示删除成功

has(any)方法:

作用:  查询是否拥有某个成员

参数:  只能接收一个参数, 表示查询的成员

返回值: 布尔值, true表示存在

clear()方法:

作用: 清空set对象

forEach(fn)方法: 此方法的回调函数的参数和全局的forEach不一样

作用: 遍历set对象

参数:  @fn 回调函数

参数1  表示值

参数2  表示值

参数3  表示set对象

返回值:  undefined

size()方法:  获取对象长度

set对象实现了迭代器接口, 所以可以通过for of遍历

WeakSet对象: 弱set对象, 因为不能被内存回收机制回收, 所以不建议使用

Map对象:

作用:  Map对象是对象的扩展, 允许属性名称是任何类型, 如: null、undefined、数字等等

创建Map对象:

语法:new Map()

对象方法:

set(key, value)方法:

作用: 为map对象添加新属性

参数: @key  属性名称  @value  属性值

返回值:  map对象, 因此可以链式调用

get(key)方法:

作用: 获取map对象中某个属性值

参数: @key 属性名称

返回值:  @key的属性值

clear()方法: 清空map对象

has(key)方法:

作用:  判断某个属性值是否存在

参数:  @key  属性名称

返回值:  布尔值,  true表示存在

delete(key)方法:

作用: 删除讴歌属性值

参数: @key  属性名称

返回值: 布尔值,  true表示删除成功

forEach(fn)方法:

作用: 遍历map对象

参数: @fn  回调函数

参数1   value

参数2   key

参数3   map对象

作用域:  全局

size():  获取长度

WeakMap对象:弱map对象, 不能被内存回收机制回收, 少用

迭代器:

ES6中实现了迭代器接口, 但是没有实现迭代器对象Iterator

迭代器应用:

数据解构、数组解构、对象解构

定义map对象、set对象

使用for of循环

实现了迭代器接口的数据(实现迭代器接口的特征是能否实现for of循环)

Generator函数:

作用:   储存状态

语法:  function * 函数名称() {}

定义状态:

语法: yield  状态内容;

每一个yield定义一个状态, 最后一个状态用return定义

函数运行后得到一个状态对象:

状态对象实现了迭代器接口, 因此可以通过for of循环遍历, 但遍历不到最后一个状态(return)

可以使用next访问状态

返回值: 一个对象

done表示是否完成遍历

value表示状态的值

例子:

// 定义generator函数

function * dayState () {

// 定义状态

yield '睁眼';

yield '砸闹钟';

yield '接着再睡';

yield '再睁眼';

yield '起来了';

yield '上学';

yield '学习';

// 睡觉是最后一个状态

return '睡觉';

}

// 使用generator函数必须执行

var ds = dayState();

// 访问状态

console.log(ds.next())

Promise对象:  允诺对象

作用: 将一部操作转化成同步的写法

promise对象内部维护一个状态,  有三种情况:

rending    异步执行的操作还没有接触

resolved   异步操作已经执行完成

rejected    异步操作执行失败

promise三种情况, 只能存在两种状态的转化,  因此只能出现两个状态:

pending  进入 resolved,  异步操作执行成功

pending  进入 rejected,   异步操作执行失败

创建对象: new Promise(fn);

参数: @fn  回调函数

参数1(一般命名为resolve)  用来将pending状态转换成resolved状态

参数2(一般命名为reject)     用来将pending状态转换成rejected状态

作用域:  全局

在回调函数中执行异步操作,当执行完毕, 会触发相应的状态改变

可以在promise实例化对象中通过then方法绑定回调函数

then(successFn, errFn)方法:

作用:  触发状态是做的事

参数:

@successFn成功时执行的回调函数

@errFn            失败时执行的回调函数

这两个回调函数的参数是执行resolve或reject方法时传递的参数

all方法:

作用:  监听多个允诺对象

如果一个失败了就立即执行失败回调函数

如果都成功了, 执行成功时的回调函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,401评论 8 265
  • [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...
    郭子web阅读 1,781评论 0 1
  • 10 德国战斧:戈麦斯国家队:德国 位置:中锋 身高/体重189cm/89Kg 戈麦斯是典型的德国中锋,能进攻抢点...
    Ace的源代码阅读 1,182评论 0 0
  • ​图 / 梦的子民 文 / 梦的子民 梁博的《灵魂歌手》,歌词说:灵魂歌手开唱瞬间,能击碎万颗心,他不属于瞬间,他...
    阅己暖华阅读 956评论 0 1
  • 你有没有爱过一个遥远的人? 他(她)从来都不让你绝望,是你继续生活下去的勇气和力量。 从相遇相知的那天起,他(她)...
    闲庭絮阅读 407评论 8 5