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. WEB基础原理——理论复习

    基本WEB原理 1. Internet同Web的关系 1.1互联网 全世界最大的局域网. 来源美国国防部的项目用于数据共享 没有TCP/IP之前最开始只能1000台电脑通信(军用协议) 1.2 万维网 ...

  2. VisualStudio 调试Linux

    微软自从换了CEO之后,拥抱开源的步伐真实越来越快了,这部,现在VS可以跟踪Linux程序了 http://blogs.msdn.com/b/vcblog/archive/2015/11/18/ann ...

  3. Android中点击隐藏软键盘最佳方法——Android开发之路4

    Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...

  4. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

  5. mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理

    mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍, 刚好我们的生产业务场景中就有这个一个案例... 一: ...

  6. mysql比较时间大小unix_timestamp

    使用unix_timestamp方法进行比较,将字符型的时间,转成unix时间戳 select * from t1 where unix_timestamp(time1) > unix_time ...

  7. Jsoup系列学习(1)-发送get或post请求

    简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 官 ...

  8. WPF 自定义标题栏 自定义菜单栏

    自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果.但是ListBox是不能设置默认选中状态的. 而我们需要一些复杂的UI效果,还是直接自定义控件来的快 GitHu ...

  9. nginx+php-fpm+mysql分离部署详解

    相信大家将这三者部署到同一台主机应该已经不陌生了,今天在这里,给大家演示一下如何将三者部署到三台主机上. 实验系统:CentOS 6.6_x86_64 实验前提:大部分软件使用编译安装,请提前准备好编 ...

  10. python爬虫学习(9) —— 一些工具和语法

    1. Beautiful Soup 在它的官网有这样一段话: You didn't write that awful page. You're just trying to get some data ...