ES6
文章平均质量分 74
ES6深入
小管打天下
这个作者很懒,什么都没留下…
展开
-
【ES6】笔记汇总
一、历史 1995 liveScript(后改名为JavaScript1996年改名) 1996 javascript 1.0 1.1; 1997 Jscript 1997.6 ECMAScript 1.0 1998.6 ECMAScript 2.0 1999.12 ECMAScript 3.0 2000 ECMAScript 4.0 草案没有通过 TC39 2007 ECMAScript 4.0 准备发布,不发布 2008.7 ECMAScript 3.1(改名为ECMA5)大会项目代号(hamony)原创 2022-05-16 01:40:11 · 502 阅读 · 0 评论 -
ES6-24【生成器与迭代器的应用】
一、生成器与迭代器的应用 遍历 遍历的核心就是从一个容器里面东西都拿出来 每一次遍历的过程中,要对遍历的结果进行处理,而不是每一次都要处理的情况,那么用遍历本身是不合适的 迭代与遍历区别 遍历 把容器里的所有东西都观察一遍、拿一遍 迭代 在本次遍历的过程中进行一次程序上的输出 在遍历的过程当中,循环到当前这一次的时候,就是整个循环功能的一次迭代 项目迭代:根据本次的结果进行一次更新,进行一次修复,进行一次小的功能叠加 在遍历过程当中进行某一次程序的输出的话,那么就必须要有一个叫迭代器的原创 2022-05-15 14:01:58 · 430 阅读 · 0 评论 -
ES6-23【JavaScript模块化】
一、JavaScript模块化 历史问题 在最开始所有脚本都写在script标签中 随后将脚本写在JS文件然后引入,由于共用了一个作用域就会产生变量覆盖=>变量重名=>污染全局的问题 于是就产生了立即执行函数,但是依旧无法解决JS加载顺序的问题,而且这也只是民间化的产物 模块化解决的问题:1. 加载顺序;2. 污染全局 立即执行函数的来历 函数声明不是表达式,只要不是表达式后面就一定不能跟执行符号,只要是表达式都可以 只要作用域一加载就函数就立马执行 立即执行函数如果前面不打分原创 2022-05-14 19:51:47 · 442 阅读 · 0 评论 -
ES6-22【Promise源码重写】
一、Promise源码实现原创 2022-05-11 20:46:11 · 353 阅读 · 0 评论 -
ES6-21【async与await】
一、async与await 概念 async:本质上就是generator生成器函数 await:就相当于是yield产出 优势 内置的执行器是co —— 简化了异步的执行 语义化更强 更广的使用性 —— 后面可以不止是promise对象 返回值一定是promise对象(内部自动触发resolve和reject) 基本使用 const fs = require('fs'); const util = require('util'); let readFile = util.promisify原创 2022-05-10 15:51:13 · 288 阅读 · 0 评论 -
ES6-20【iterator与generator】
一、iterator 迭代器的实现 function makeIterator(arr){ var iterRatorIndex = 0; return{ next(){ return arr.length > iterRatorIndex ? {value:arr[iterRatorIndex++],done:false}: {value:undef原创 2022-05-09 16:45:30 · 429 阅读 · 0 评论 -
ES6-19【promise的使用方法和自定义promisify】
一、promise深入 若在executor里面抛出错误,promise状态会直接更改为reject let promise = new Promise(function(resolve,reject){ resolve(a); // 还没来得及执行就抛出了错误,将状态更改为reject,然后触发回调 }) promise.then((val)=>{ console.log('resolve: '+val) },(reason)=>{ console.log('rejec原创 2022-05-04 20:07:14 · 344 阅读 · 0 评论 -
ES6-18【异步的开端-promise】
一、异步的开端-promise原创 2022-05-03 16:20:22 · 228 阅读 · 0 评论 -
ES6-17【类、继承、class源码、修饰器模式】
原型回顾 function Person(name = 'zhangsan', age = '18') { this.name = name; this.age = age; } Person.prototype.say = function() { console.log(`my name is ${this.name}, my age is ${this.age}`); } var person = new Person('lisi', '19'); console.log原创 2022-04-30 17:03:13 · 447 阅读 · 0 评论 -
ES6-16【WeakMap与WeakSet、proxy与reflect】
一、map/set补充 二、WeakMap/WeakSet 三、proxy/reflect原创 2022-04-29 23:07:30 · 456 阅读 · 0 评论 -
ES6-15【map与set】
一、ES6新增数据结构(set/map) (1)set/map概念 两个都是es6新增的构造函数: set:类似于数组,与数组唯一不同的地方就是成员是唯一的 map:类似于对象,与对象唯一不同的地方就是键可以不止是字符串 set、map、Promise、Proxy四个无法通过babel编译语法降级(poly feel、babel poly feel) (2)set/map使用 set 原型 var set = new Set(); console.log(set); 输出: add方原创 2022-04-27 09:23:04 · 2227 阅读 · 0 评论 -
ES6-14【Unicode表示法、字符串方法、模板字符串】
一、字符串拓展 (1)Unicode字符表示 UTF-16编码回顾 在JS里面的字符是以utf-16编码方式进行解析 utf-16的编码范围: U+0000 ~ U+D800:两个字节表示一个字符 U+D800 ~ U+FFFF:属于空位,四个字节表示一个字符(超出编码极限的字符会以这种方式解析) 超出编码极限的字符也可用花括号包裹,JS会帮忙解析,例如:\u{2pbb7} == 𠮷 字符的表示方式 代码补全 如果码点不足4位,则用0补全 console.log('\u0041\u004原创 2022-04-25 21:19:53 · 1133 阅读 · 0 评论 -
ES6-13【正则方法、修饰符yus、UTF_16编码方式】
一、正则方法 (1)正则回顾 修饰符 global -g ignoreCase -i mutli-line -m 元字符 \w \W word \d \D digit [0-9] \s \S space \n \r \t \v \f \b \B bridge . 除了\n \r所有字符 贪婪模式 能匹配多,就不匹配少 正向预查(先行断言)(先行否定断言) 例:x后面紧跟着y /x(?=y)/ (2)新增特性 声明正则的变化方式 传统声明方式 var reg = /xyz/ig v原创 2022-04-25 00:32:39 · 185 阅读 · 0 评论 -
ES6-12【array/数值拓展、ArrayOf、ArrayFrom】
一、es6数组构造器新增方法 (1)of 预期是把3填充进数组,却填充了3个空,产生了歧义 console.log(new Array(3)) //[empty*3] 为了解决这个问题,es6新增了数组方法of,它可以把一个数值填充进数组 console.log(Array.of(3)); //[3] 因为这个方法在构造器上,所以要通过 Array. 的方式来调用 声明数组的方式: 字面量 构造函数 构造函数上的of方法(es6新增) (2)from 它能够将类数组,或者部署了 iterator原创 2022-04-23 21:59:18 · 265 阅读 · 0 评论 -
ES6-11【Symbol、iterator、forOf、typeArray】
知识回顾 (1)箭头函数不能修改this指向 function foo() { return () => { // 第一层 return () => { // 第二层 return () => { // 第三层 console.log('id:', this.id); } } } } var f = foo.call({ id: 1 }); // 最外层是普通函原创 2022-04-22 21:27:34 · 516 阅读 · 0 评论 -
ES6-10【更改原型、4种遍历方式、super、symbol遍历】
一、更改原型 (1)__ proto__ 属于内部属性,原则上不允许修改 访问效率慢 所有继承子该原型的对象都会影响到 var pserson = new Person(); person.__proto__ = {} // 替代方式: // Object.setPrototypeOf() 写的操作 // Object.getPrototypeOf() 读取操作 // Object.create() 生成操作 (2)setPrototypeOf/getPrototypeOf 使用说明 setP原创 2022-04-13 23:01:19 · 503 阅读 · 0 评论 -
ES6-9【对象密封4种方式、assign、无法拷贝getter/setter的问题】
一、对象密封4种方式 (1)get和set对应的函数名 可以通过getOwnPropertyDescriptor查看 const obj = { get foo(){}, set foo(x){} } var descriptor = Object.getOwnPropertyDescriptor(obj,'foo'); console.log(descriptor.get.name);//打印get foo console.log(descriptor.set.name);//打印set原创 2022-04-11 16:56:30 · 499 阅读 · 2 评论 -
ES6-8【函数名/对象拓展、描述符、getter/setter】
一、函数名 (1)name var f = function (){} console.log(f.name); //es5 输出"" es6输出f (2)anonymous console.log(new Function().name); console.log((new Function).name); //输出anonymous (3)bound foo call/apply就不行,因为会执行 function foo(){} console.log(foo.bind({}).name); //原创 2022-04-11 14:39:31 · 326 阅读 · 0 评论 -
ES6-7【箭头函数的实质、箭头函数的使用场景】
一、箭头函数的实质 this由外层的函数作用域来决定(箭头函数的作用域是父级的作用域,不是父级) =>不能作为构造函数来使用(因为没有this) call、apply、bind无效(因为没有this) 没有arguments对象,用rest(拓展运算符)替代(因为与function不是同一种) yield 命令不能生效,在generator函数中(因为没有this) function foo(){ console.log(this) return (a) =>{原创 2022-04-10 22:47:17 · 1006 阅读 · 0 评论 -
ES6-6【函数默认值特殊情况、this指向、箭头函数基本形式、rest运算符】
一、函数默认值补充 (1)length 函数一旦给了默认值,length会发生变化,体现在默认值所给的位置 function test(a, b, c) {} test(); console.log(test.length); //输出3 function test(a, b, c = 1) {} test(); console.log(test.length); //输出2 function test(c = 1, a, b) {} test(); console.log(test.length);原创 2022-04-10 01:46:17 · 406 阅读 · 0 评论 -
ES6-5【隐式转换、函数参数解构、解构本质、()用法】
知识回顾 解构赋值对象如果不let声明,JS就认为它是一个语法块(块级作用域) 解决方法:用括号包裹,变成表达式 一、隐式转换 二、函数参数解构 三、解构本质 四、()用法原创 2022-04-02 10:06:31 · 397 阅读 · 0 评论 -
ES6-4【解构赋值、函数默认值、数组解构、对象解构】
一、函数默认值 (1)补充知识 暂时性死区 TDZ(Temporal Dead Zone) var x = 1; { let x = x; //报错 log(x) } (2)参数默认值 虚值 在通过boolean转化的时候转化为假的值就是falsy(虚值) function foo(x,y){ x = x || 1; y = y || 2; console.log(x+y); } foo(); //3 foo(5,6); //11 foo(5); //7 foo原创 2021-09-20 17:14:47 · 293 阅读 · 2 评论 -
ES6-3【let进阶、const、全部变量与顶层对象】
一、let进阶 (1)闭包问题 var arr = []; for(let i = 0; i< 10 i++){ arr[i] = function(){ //赋值10个函数体的同时,也附带了10个闭包 console.log(i) } } for(var k = 0; k <10; k++){ arr[k](); } //输出0-9 //通过函数形式形成作用域 var arr = []; var _loop = function _loop(i) {原创 2021-09-19 22:59:45 · 191 阅读 · 0 评论 -
ES6-2 【块级作用域与嵌套、let、暂行性死区】
一、块级作用域与嵌套 (1)kiss原则 解决变量污染有两种方法: 用立即执行函数创造一个独立的作用域,但函数内部也会造成变量污染 kiss原则(keep it simple stupid) kiss原则就是简单又愚蠢,即让函数功能更加单一,抽象出来解决一个问题 针对这种现状es6产生了一种新的语法:let语法 (2)let let与之相关联的一个概念叫做块级作用域 知识回顾: 全局作用域:全局执行前创建的作用域 函数作用域:函数执行前创建的作用域 什么是块? 就是一个大括号 {} let的语法特征原创 2021-09-18 16:33:18 · 246 阅读 · 0 评论 -
ES6-1【ES6版本过度历史、环境变量初识、本地环境搭建、babel】
一、历史 1995 liveScript(后改名为JavaScript1996年改名) 1996 javascript 1.0 1.1; 1997 Jscript 1997.6 ECMAScript 1.0 1998.6 ECMAScript 2.0 1999.12 ECMAScript 3.0 2000 ECMAScript 4.0 草案没有通过 TC39 2007 ECMAScript 4.0 准备发布,不发布 2008.7 ECMAScript 3.1(改名为ECMA5) 大会项目代号(hamony原创 2021-09-14 23:28:15 · 330 阅读 · 0 评论