ES6入门笔记

增加了块级作用域.
常量
避免了变量提升
var [a, b, c] = [1, 2, 3];
var [[a,d], b, c] = [[1,4], 2, 3];
var [...a] = [1,2]
var [c = 3] = [5] //默认值
var { foo, bar } = { foo: "aaa", bar: "bbb" };
作用. 复杂的 json & arr 解析。返回值解析
修正了 ES5 以前超过了 0xFFFF 就无法处理的问题
也就是 UTF-32. 当你占用两个字节的时候. JavaScript处理不了
ES6解决了问题,提供了方法返回准确了

Iterator 解决遍历字符串问题
repeat 重复字符串
padStart,padEnd
模板字符串 ``
标签模版 function aaa(a,b,c) {} aaa`o ${i}`
增加了数学判断类的东西. 我的弱项.
Array.from like array 转换 array
Array.of 更好的创建数组
copyWithin [1, 2, 3, 4, 5].copyWithin(0, 3) // 4,5,3,4,5
find findIndex 查找 代替 indexOf
fill 填充数组
entries,keys,values 增加数组遍历方式. for of
includes 也是查找 返回 boolean
参数变化
function log(x, y = 'World') {}
function log({x, y} = { x: 0, y: 0 }) {}
...a
function 增加了 name
() => {} (注意作用域是通的,没有单独的作用域)
尾调优化
__proto__ 实体可以访问Function的原型链。
Object.assign 合并(多层嵌套以后是浅复制)
Object.create 创建object. 可以设置属性
defineProperty & defineProperties 设置属性
Object.freeze 冻结. 也就是设置属性而已
getOwnPropertyDescriptor && getOwnPropertyDescriptors 返回一个字段的属性并且可以修改
getOwnPropertyNames 无视enumerable 遍历属性
getPrototypeOf  获取原型链
Object.is 判断是否相等 能规避一些bug
Object.Keys 无视enumerable被尊重了一下
Symbol(description) 完全不重复的对象
Symbol.for('foo') === Symbol.for('foo') 用for会查询之前是否存在过会重复

可以在Class中使用支持的方式
Symbol.hasInstance (重载 instanceof. )
Symbol.isConcatSpreadable (arr.concat 是否展开.)
Symbol.species
Symbol.match
Symbol.replace
Symbol.search
Symbol.split
Symbol.iterator (写一个方法支持默认的 for of 循环)
Symbol.toPrimitive (当该对象被转为原始类型的值,触发)
Symbol.toStringTag
Symbol.unscopables
Set  类似数组 不可重复 重复会自动忽略,forEach Iterator
Map  类似{ } 可以使用任意对象做key 不仅仅是string
WeakSet & WeakMap 和上面的一样。 只不过参数只接受对象,但是参数只接受 对象 , 且不能遍历. 因为是弱对象
WeakSet & WeakMap 这两个不是很明白。
Proxy 就是可以拦截下面的基本操作.
new Proxy(object,{});

get(target, propKey, receiver)
set(target, propKey, value, receiver)
has(target, propKey)
deleteProperty(target, propKey)
ownKeys(target)
getOwnPropertyDescriptor(target, propKey)
defineProperty(target, propKey, propDesc)
preventExtensions(target)
getPrototypeOf(target)
isExtensible(target)
setPrototypeOf(target, proto)
apply(target, object, args)
construct(target, args)

Reflect 并不是很清楚,需补
function makeIterator(array) {
  var nextIndex = 0;
  return {
    next: function() {
      return nextIndex < array.length ?
        {value: array[nextIndex++], done: false} :
        {value: undefined, done: true};
    }
    return() {  } //在for of当中退出 会调用return()
  };
}

需要返回 {value,done} 再加上Symbol.iterator
这种模式就可以支持了

set,map,array,Generator 默认支持
function* 原生支持 Iterator
yield 会停止 等待下一次的 next调用。 可用于异步编程.
return() 可以强行终止
yield* 再次调用一个 function* 场景(二叉树)
function timeout(b,ms) {
  return new Promise((resolve, reject) => {
    if(b) setTimeout(resolve, ms, 'done');
    else setTimeout(reject, ms, 'false');
  });
}

timeout(true,100).then((value) => {
  console.log(value);
},(error) => { console.log(error) });

可以嵌套
基本就是 语法糖
增加了继承 extends
可以继承原生对象
支持静态方法
  1. 一直没有什么机会用到正则. 等用到再来补补吧.
  2. 看了一遍也做了一些测试. 总觉得不是很好用. 等实际用一用

ES6入门笔记的更多相关文章

  1. 读阮一峰老师 es6 入门笔记 —— 第一章

    鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ,c ...

  2. 【js 笔记】读阮一峰老师 es6 入门笔记 —— 第二章

    第二章:变量的解构赋值 在es6 版本前,如果要为多个变量赋不同值,我想是件比较麻烦的事情.但es6 版本新推出了一个新技术那就是今天的主角变量的解构赋值. 变量解构赋值分为两种方法:数组解构赋值 和 ...

  3. 【js 笔记】读阮一峰老师 es6 入门笔记 —— 第一章

      鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ...

  4. 【ES6】ES6入门笔记

    1.概要 - ECMAScript2015(ES6)是Javascript最标准的语法式样,是在2015年6月由Ecma国籍组织公布的最新版本,现在已经被多个领域和浏览器所广泛采纳和使用. 2.学习网 ...

  5. es6入门6--数组拓展运算符,Array.from()基本用法

    本文只是作为ES6入门第九章学习笔记,在整理知识点的同时,会加入部分个人思考与解答,若想知道更详细的介绍,还请阅读阮一峰大神的ES6入门 一.拓展运算符 ES6中新增了拓展运算(...)三个点,它的作 ...

  6. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  7. es6学习笔记-proxy对象

    前提摘要 尤大大的vue3.0即将到来,虽然学不动了,但是还要学的啊,据说vue3.0是基于proxy来进行对值进行拦截并操作,所以es6的proxy也是要学习一下的. 一 什么是proxy Prox ...

  8. ES6读书笔记(三)

    前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,<ES6读书笔记(二)>,现在为第三篇,本篇内容包括: 一.Promise 二.Iterator和for of循 ...

  9. ES6读书笔记(二)

    前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,现在为第二篇,本篇内容包括: 一.数组扩展 二.对象扩展 三.函数扩展 四.Set和Map数据结构 五.Reflect 本文 ...

随机推荐

  1. UICollectionView布局cell的三种方式

    UICollectionViewFlowLayout里面: // 方法一 - (void)prepareLayout{} // 方法二 - (nullable NSArray<__kindof ...

  2. ListView之性能优化

    listview加载的核心是其adapter,本文通过减少adapter中创建.处理view的次数来提高listview加载的性能,总共分四个层次: 0.最原始的加载 1.利用convertView ...

  3. sublime 相关配置

    安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...

  4. SQL Server封闭掉 触发器递归

    SQL Server关闭掉 触发器递归SQL Server  是有一个开关, 可以关闭掉 触发器递归的.EXEC sp_dboption '数据库名字', 'recursive triggers', ...

  5. 自定义制作iso镜像

    下载"/etc/yum.repos.d/"下的MondoRescue软件库,文件名为"mondorescue.repo".请为你的Linux OS发行版本下载正 ...

  6. plain framework 1 一款主要用于网络(游戏)开发的C/C++开源框架 安装篇 updated

    上次介绍了一下plain framework的基础相关资料,今天该框架正式开源发布.项目的地址托管于github上,我相信大多数朋友都应该知道.今天要介绍的是该框架的目录基本结构,以及分别在linux ...

  7. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  8. 虚拟机+apache+php+mysql 环境安装配置

    虚拟机的安装:直接下一步即可,注意修改路径. 安装完成后新建虚拟机,直接下一步.如果选择镜像文件后出现错误,可以试着去修改电脑bios中的虚拟化设置,改为enable,如下图: apache安装: 1 ...

  9. [No0000AC]全局鼠标键盘模拟器

    之前网上下载的一位前辈写的工具,名叫:Dragon键盘鼠标模拟器,网址http://www.esc0.com/. 本软件能够录制键盘鼠标操作,并能按要求回放,对于重复的键盘鼠标操作,可以代替人去做,操 ...

  10. [No000083]文件与文件夹操作

    #region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...