![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ES6
文章平均质量分 96
可乐雪碧薄荷糖
这个作者很懒,什么都没留下…
展开
-
ES6-24【生成器与迭代器的应用】
一.迭代器(1).es5方式手写迭代器var arr = [1,2]function generator(arr){ var i = 0; return{ next(){ var done = i > arr.length ? true : false, value = done ? 'undefined' : arr[i++]; return {原创 2020-12-06 12:59:13 · 144 阅读 · 0 评论 -
ES6-23【javascript模块化】
一.模块化历史(1).历史问题 在刚开始所有的JS全部写在一个js当中 随后分为index.html就写在index.js当中此时就会存在一个问题,由于公用了一个作用域就会产生、变量覆盖、变量重名、污染全局的问题 所以产生了立即执行函数,但是依旧无法解决首页js加载顺序的问题,而且这也只是民间化的产物(2).立即执行函数知识点立即执行函数如果不打;是会报错的,建议首尾都打上 模块抛出对象,产出闭包 不会暴露作用域 但是存在着无法自由获得立即执行函数中的变量,所以无法依赖 立即执原创 2020-12-06 12:57:19 · 155 阅读 · 0 评论 -
ES6-22【手写实现之 Promise】
一.promise总结 promise是一个容器 保存着某个未来才会结束的事件的结果 从语法上说,promise是一个对象 可能是成功的结果,也可能是失败的结果二.基础Promise实现function Promise(fn) { var callback = ''; this.then = function (cb) { console.log(cb); callback = cb;原创 2020-12-06 12:54:15 · 320 阅读 · 0 评论 -
ES6-21【async与await】
一.async与await(1).生成函数中的returnfunction * get(){ yield 1; yield 2; yield 3;}let g = get();console.log(g.next());console.log(g.return());console.log(g.next());{value: 1, done: false}{value: undefined, done: true}{value: undefined, d原创 2020-12-06 12:32:09 · 131 阅读 · 0 评论 -
ES6-20【iterator与generator】
一.Iterator(1).实现原理重点就是先获取后++function makeIterator(arr){ var iterRatorIndex = 0; return{ next(){ return arr.length > iterRatorIndex ? {value:arr[iterRatorIndex++],done:false}:原创 2020-12-02 10:49:18 · 112 阅读 · 0 评论 -
ES6-19【promise的使用方法和自定义promisify】
一.promise的使用方法(1).resolve中报错会来不及执行就被捕获到rejectlet promise = new Promise(function(resolve,reject){ resolve(a);})promise.then((val)=>{ console.log(val) },(reason)=>{ console.log(reason) })a is not defined(2).catch捕获原创 2020-12-02 10:45:04 · 417 阅读 · 0 评论 -
ES6-18【异步的开端-promise】
一.异步的开端(1).回调地狱下面是node得异步fs读写模块,不需要掌握,但是会形成回调地狱 let fs = require('fs'); fs.readFile('./name.txt','utf-8',(err,data)=>{ if(data){ fs.readFile(data,'utf-8',(err,data)=>{ console.log(data);原创 2020-12-02 10:27:49 · 146 阅读 · 0 评论 -
ES6-17【类、类的继承、类的实现、类的修饰】
一.类(1).基础最简单的定义方式class Person{}log(new Person());//Person{}log(typeof Person);function标准写法class Person{ constructor(name = "zhangsan",age = "18"){ //私有属性 this.name = name; this.age = age; } //公有属性原创 2020-12-02 09:47:06 · 285 阅读 · 0 评论 -
ES6-16【WeakMap与WeakSet、proxy与reflect】
一.补充(1).Map转换为数组结构const myMap = new Map();myMap.set(true,7) .set({foo:3},['abc']) log(myMyp);//Map(2){true=>7,{...}=>Array(1)} log([...myMap])//[Array(2),Array(2)] 0:[true,7] 1:[{...},Array(1)] length:2 成功转为二维数组原创 2020-12-02 09:39:20 · 184 阅读 · 0 评论 -
ES6-15【map与set】
一.概述(1).map/setset是一个成员唯一的数组map是一个对象var set = new Set();var map = new Map();(2).降级这四个无法通过babel降级const map = new Map();const set = new Set();const p = new Promise();const p1 = new Proxy();二.set(1).简述var set = new Set();cons原创 2020-12-01 10:04:27 · 135 阅读 · 0 评论 -
ES6-14【Unicode表示法、字符串方法、模板字符串】
一.Unicode表示法(1).字符串拓展四位以上解析log("\u{20BB7}")编码解析log("\u{41}\u{42}\u{43}")//ABClog('\uD842\uDFB7' === '\u{20BB7}')//TRUE(2).编码方法es5中涉及到编码的var s = "????"console.log(s.length);//通过四个字节的方式解析打印2console.log(s.charAt(0));//� 通过char原创 2020-12-01 09:54:47 · 227 阅读 · 0 评论 -
ES6-13【正则方法、修饰符yus、UTF_16编码方式】
一.正则方法(1).正则回顾基本形势var reg = /\w/gim修饰符解析g - global 全局i - ignoreCase 忽略大小写m - mutli-line 换行全局匹配区别有g['s','d','j','s',1,2,3]无g['s', index:0,input:'sdjflsd'][]填写范围[A-Za-z0-9](2).元字符转译通过\转译元字符解析w 数字字母下划线 = wordW !非上方条件..原创 2020-12-01 09:45:39 · 331 阅读 · 0 评论 -
ES6-12【array、数值拓展、数组拓展、ArrayOf、ArrayFrom】
一.Arrayes5声明数组方式console.log(Array());//[]console.log(Array(3));//[empty*3]console.log(Array(3,1));//[3, 1];console.log(new Array());[]console.log(new Array(3))//[empty*3]es6的新数组方法ofconsole.log(Array.of());//[]console.log(Array.of());..原创 2020-12-01 09:37:14 · 142 阅读 · 0 评论 -
ES6-11【Symbol、iterator、forOf、typeArray】
一.补充知识(1).result运算符对象拓展在es7上面增加了对对象的拓展和展开普通方式var obj = { a: 1, b: 2, c: 3}var obj1 = { a: 4, d: 5, e: 6}var obj2 = {}Object.assign(obj2, obj, obj1);log(obj2){ a:4 b:2 c:3 d:5 e:6}es7展开var o原创 2020-12-01 09:28:59 · 112 阅读 · 0 评论 -
ES6-10【super、4种遍历方式、原型、symbol遍历】
一.原型(1).原型知识拓展1.我们需要牢记两点(1).__proto__ 和constructor属性是对象所独有的;(2).prototype属性是函数所独有的;因为函数也是一种对象,所以也拥有__proto__和constructor属性2.__proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,直到找到__proto__属性的终点null,再往上找就相当于在null上取值,会报原创 2020-11-30 10:25:34 · 401 阅读 · 0 评论 -
ES6-8【函数名-对象拓展-描述符-getter-setter】
一.函数名.namevar f = function (){}//es5 输出"" es6输出fanonymouslog(new Function.name);bound foocall就不行,因为会执行function foo(){}log(foo.bind({}).name);二.对象扩展特殊写法const foo = "bar";const baz = {foo};console.log(baz);//{foo: "b原创 2020-11-30 10:07:35 · 158 阅读 · 0 评论 -
ES6-9【对象密封4种方式、assign、取值函数的拷贝】
一.对象密封的4种方式(1).访问对象下的伪元素函数名const obj = { get foo(){ }, set foo(x){ } } log(obj.foo.name)//这样会报错因为打印Obj.foo == un var descriptor = Object.getOwnPropertyDescriptor(obj,'foo'); log(descriptor.get.name);//打印get foo set访问也...原创 2020-11-30 10:03:18 · 225 阅读 · 2 评论 -
ES6-7【箭头函数的实质、箭头函数的使用场景】
一.箭头函数的实质1.this.为外层的函数作用域来决定(箭头函数的作用域是父级的作用域,而不是父级)2.=>不能作为构造函数来使用3.没有arguments对象,用rest(拓展运算符)4.yield 命令不能生效,在generator函数中function foo(){ log(this) return (a) =>{ log(this.a) }}var obj1 = {a:2};var obj2 = {a:3};原创 2020-11-30 09:49:23 · 280 阅读 · 0 评论 -
ES6-6【this指向、箭头函数基本形式、rest运算符】
一.this指向(1).补充知识lengthfunction test(a, b, c = 1){}test(1);console.log(test.length);//输出2function test(c = 1, a, b){}test(1);console.log(test.length);//输出0function test(a,b,c = 1, d, e, f){}test(1);console.log(test.length);//依然是2说明es6的..原创 2020-11-30 09:44:07 · 128 阅读 · 0 评论 -
ES6-5【隐式转换、函数参数解构、解构本质、()用法】
一.()用法变为表达式而不是作用域let a (xxx)//这样写会报错let a;({a}={a:1});console.log(a);//1对象属性得模式匹配let a1 = [1, 2, 3], obj = {};[obj2.a,obj2.b,obj.c] = a1;console.log(obj2.a, obj.b, obj2.c);//1 2 3()的合法性let [(a)] = [1];let ({a:b}) = {};let {(原创 2020-11-27 10:24:43 · 171 阅读 · 0 评论 -
ES6-4【解构赋值、函数默认值、数组解构、对象解构】
一.函数默认值(1).补充var x = 1;{ let x = x; log(x) }//是报错x is not defined暂时性死区TDZ(Temporal Dead Zone)(2).函数默认值虚值解决function foo(x,y){ x = x || 1; y = y || 2; console.log(x+y);}foo(); //3foo(5,6); //11foo(5); //7foo(n原创 2020-11-27 10:22:23 · 457 阅读 · 2 评论 -
ES6-3【let进阶、const、全部变量与顶层对象】
一.let进阶(1).闭包的问题var arr = [];for(let i = 0; i< 10 i++){ arr[i] = function(){ console.log(i) }}for(var k = 0; k <10; k++){ arr[k]();}//输出0-9因为此处let有独立的作用域,循环结束后带出了let的10个作用域,所以输出0-9(2).let补充这样也会报错{ let a原创 2020-11-27 10:17:13 · 167 阅读 · 0 评论 -
ES6-2【块级作用域与嵌套、let、暂行性死区】
一.let与暂行性死区kiss原则 keep it simple stupid(1).let三规则1.let在同一作用域下不可重复声明报错示例:function test(){ let a =1; var a =2;}test();function test(a){ let a = 10; console.log(a);}test();演示示例:function test(a){ { let a =.原创 2020-11-27 10:14:56 · 182 阅读 · 0 评论 -
ES6-1【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) 大会项目代原创 2020-11-27 10:10:31 · 215 阅读 · 0 评论