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. 2D动画的制作

    通过css3的transform  transition可以实现平移,旋转,缩放,拉伸等效果 1.缩放 -webkit-transform: scale(1); -moz-transform: sca ...

  2. 在Outlook中查看预览SharePoint文档库的文档

    本文概况 阅读时间: 约2分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户,管理员 难度指数:★★☆☆☆ 在日常工作中,总有一些常用的文档需要经常打开查看,其实我 ...

  3. 内网渗透-代理(reGeorg)

    我对于reGeorg的使用,只是简单说下. 首先需要下载reGeorg,下载地址:https://github.com/sensepost/reGeorg 然后将reGeorg,上传到服务端.直接访问 ...

  4. iOS多线程之8.NSOPeration的其他用法

      本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...

  5. iOS类中的属性设置背景色(统一)

    unsigned int count; objc_property_t *properties = class_copyPropertyList([self class], &count); ...

  6. 原创 C++作用域 (一)

    1概述 在所有的计算机程序中,一个基本的目标是操作一些数据,然后获得一些结果.为了操作这些数据,需要为这些数据分配一段内存,我们可以将这段内存称为变量.为了方便操作,以及程序可读性方面的考虑,需要使用 ...

  7. Laravel-lumen 配置JWT

    具体步骤参照: [ JWT & Lumen ] 第一步 在项目根目录 执行命令 composer require tymon/jwt-auth第二步 在 bootstrap/app.php 的 ...

  8. Hive-0.x.x - Enviornment Setup

    All Hadoop sub-projects such as Hive, Pig, and HBase support Linux operating system. Therefore, you ...

  9. 创建agsXMPP 自定义packet types

    在网上看了好多文章基本都是转载 没有能成功运行的,又没有别的资料,很是费解,无奈之下只好潜心研究,最终总结了几个要点给大家分享下,以免再次多浪费时间 agsXMPP是什么就不多描述了,重点说下我在创建 ...

  10. auto_clipboard

    黄山松发表于博客园:http://www.cnblogs.com/tomview/p/6137179.html #ifndef __HSS_AUTO_CLIPBOARD_HSS__#define __ ...