ES6
文章平均质量分 74
ES6深入
小管打天下
这个作者很懒,什么都没留下…
展开
-
【ES6】笔记汇总
一、历史1995 liveScript(后改名为JavaScript1996年改名)1996 javascript 1.0 1.1;1997 Jscript1997.6 ECMAScript 1.01998.6 ECMAScript 2.01999.12 ECMAScript 3.02000 ECMAScript 4.0 草案没有通过 TC392007 ECMAScript 4.0 准备发布,不发布2008.7 ECMAScript 3.1(改名为ECMA5)大会项目代号(hamony)原创 2022-05-16 01:40:11 · 481 阅读 · 0 评论 -
ES6-24【生成器与迭代器的应用】
一、生成器与迭代器的应用遍历遍历的核心就是从一个容器里面东西都拿出来每一次遍历的过程中,要对遍历的结果进行处理,而不是每一次都要处理的情况,那么用遍历本身是不合适的迭代与遍历区别遍历把容器里的所有东西都观察一遍、拿一遍迭代在本次遍历的过程中进行一次程序上的输出在遍历的过程当中,循环到当前这一次的时候,就是整个循环功能的一次迭代项目迭代:根据本次的结果进行一次更新,进行一次修复,进行一次小的功能叠加在遍历过程当中进行某一次程序的输出的话,那么就必须要有一个叫迭代器的原创 2022-05-15 14:01:58 · 405 阅读 · 0 评论 -
ES6-23【JavaScript模块化】
一、JavaScript模块化历史问题在最开始所有脚本都写在script标签中随后将脚本写在JS文件然后引入,由于共用了一个作用域就会产生变量覆盖=>变量重名=>污染全局的问题于是就产生了立即执行函数,但是依旧无法解决JS加载顺序的问题,而且这也只是民间化的产物模块化解决的问题:1. 加载顺序;2. 污染全局立即执行函数的来历函数声明不是表达式,只要不是表达式后面就一定不能跟执行符号,只要是表达式都可以只要作用域一加载就函数就立马执行立即执行函数如果前面不打分原创 2022-05-14 19:51:47 · 404 阅读 · 0 评论 -
ES6-22【Promise源码重写】
一、Promise源码实现原创 2022-05-11 20:46:11 · 299 阅读 · 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 · 231 阅读 · 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 · 407 阅读 · 0 评论 -
ES6-19【promise的使用方法和自定义promisify】
一、promise深入若在executor里面抛出错误,promise状态会直接更改为rejectlet 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 · 326 阅读 · 0 评论 -
ES6-18【异步的开端-promise】
一、异步的开端-promise原创 2022-05-03 16:20:22 · 211 阅读 · 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 · 391 阅读 · 0 评论 -
ES6-16【WeakMap与WeakSet、proxy与reflect】
一、map/set补充二、WeakMap/WeakSet三、proxy/reflect原创 2022-04-29 23:07:30 · 445 阅读 · 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 · 2181 阅读 · 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 · 1112 阅读 · 0 评论 -
ES6-13【正则方法、修饰符yus、UTF_16编码方式】
一、正则方法(1)正则回顾修饰符global -gignoreCase -imutli-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/igv原创 2022-04-25 00:32:39 · 165 阅读 · 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 · 246 阅读 · 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 · 495 阅读 · 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 · 465 阅读 · 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 fooconsole.log(descriptor.set.name);//打印set原创 2022-04-11 16:56:30 · 438 阅读 · 2 评论 -
ES6-8【函数名/对象拓展、描述符、getter/setter】
一、函数名(1)namevar f = function (){}console.log(f.name); //es5 输出"" es6输出f(2)anonymousconsole.log(new Function().name);console.log((new Function).name);//输出anonymous(3)bound foocall/apply就不行,因为会执行function foo(){}console.log(foo.bind({}).name); //原创 2022-04-11 14:39:31 · 304 阅读 · 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 · 950 阅读 · 0 评论 -
ES6-6【函数默认值特殊情况、this指向、箭头函数基本形式、rest运算符】
一、函数默认值补充(1)length函数一旦给了默认值,length会发生变化,体现在默认值所给的位置function test(a, b, c) {}test();console.log(test.length); //输出3function test(a, b, c = 1) {}test();console.log(test.length); //输出2function test(c = 1, a, b) {}test();console.log(test.length);原创 2022-04-10 01:46:17 · 374 阅读 · 0 评论 -
ES6-5【隐式转换、函数参数解构、解构本质、()用法】
知识回顾解构赋值对象如果不let声明,JS就认为它是一个语法块(块级作用域)解决方法:用括号包裹,变成表达式一、隐式转换二、函数参数解构三、解构本质四、()用法原创 2022-04-02 10:06:31 · 371 阅读 · 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(); //3foo(5,6); //11foo(5); //7foo原创 2021-09-20 17:14:47 · 272 阅读 · 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 · 177 阅读 · 0 评论 -
ES6-2 【块级作用域与嵌套、let、暂行性死区】
一、块级作用域与嵌套(1)kiss原则解决变量污染有两种方法:用立即执行函数创造一个独立的作用域,但函数内部也会造成变量污染kiss原则(keep it simple stupid)kiss原则就是简单又愚蠢,即让函数功能更加单一,抽象出来解决一个问题针对这种现状es6产生了一种新的语法:let语法(2)letlet与之相关联的一个概念叫做块级作用域知识回顾:全局作用域:全局执行前创建的作用域函数作用域:函数执行前创建的作用域什么是块? 就是一个大括号 {}let的语法特征原创 2021-09-18 16:33:18 · 225 阅读 · 0 评论 -
ES6-1【ES6版本过度历史、环境变量初识、本地环境搭建、babel】
一、历史1995 liveScript(后改名为JavaScript1996年改名)1996 javascript 1.0 1.1;1997 Jscript1997.6 ECMAScript 1.01998.6 ECMAScript 2.01999.12 ECMAScript 3.02000 ECMAScript 4.0 草案没有通过 TC392007 ECMAScript 4.0 准备发布,不发布2008.7 ECMAScript 3.1(改名为ECMA5) 大会项目代号(hamony原创 2021-09-14 23:28:15 · 288 阅读 · 0 评论