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. 离开Autodesk,开启新篇章

    我已经离开了Autodesk,开启新篇章.在过去7年多时间中,我先后支持Autodesk 基础设施相关产品的开发,包括MapGuide/AIMS,Map3D,Civil 3D,Infraworks等, ...

  2. ipython notebook 浏览器中编写数学公式和现实

    Python Notebook简介1 http://www.cnblogs.com/cbscan/p/3545084.html $ python -m IPython http://pypi.pyth ...

  3. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  4. Android Weekly Notes Issue #222

    Android Weekly Issue #222 September 11th, 2016 Android Weekly Issue #222 ARTICLES & TUTORIALS Fo ...

  5. Titanium.UI.createAlertDialog

    学习TI 记录一下 1.确认对话框 Js代码 var a = Titanium.UI.createAlertDialog({ title:'添加人员信息', message:"人员添加成功& ...

  6. iOS面试题 -总结 ,你的基础扎实吗?

    1.#import和#include的区别,@class代表什么? (1)#import指令是Object-C针对#include的改进版本,#import确保引用的文件只会被引用一次,这样你就不会陷 ...

  7. android常用框架收录

    1.Volley.Retrofit 网络框架2.ormlite.GreenDao数据库框架3.AndroidAnnotations.butterknife.Dagger注解框架4.响应式编程    R ...

  8. git基础

    1.新的未跟踪文件 新创建的README文件没有进行任何跟踪 $ git status On branch master Untracked files: (use "git add < ...

  9. ssl + nginx + tomcat 部署方案

    安装make yum -y install gcc automake autoconf libtool make 安装g++ yum install gcc gcc-c++ 安装PCRE cd /us ...

  10. HTML---用记事本写html

    <DOCTYPE HTML> <--DOCTYPE 文档类型,浏览器按照该类型解析--> <html> <head> <title>这个是h ...