ES6
掌握规范,简洁的js。开发高质量代码
少油少盐不要辣
趁着年轻,去折腾,去改变吧
展开
-
手写实现简单promise
class MyPromise { constructor(fn) { // 传入执行器函数后,立即执行。执行器函数接受两个参数哦 this.status = 'pending' // promise对象默认为pending状态 this.resolveParams = null this.rejectParams = null function resolve(...arg) { this.resolvePar原创 2021-11-01 13:40:06 · 666 阅读 · 0 评论 -
js箭头函数和普通函数的区别
1.this(执行上下文)指向(1)普通函数中的this:在简单调用中,非严格模式下,指向window。严格模式下,为undefined。function parent() { console.log(this); }parent();// window 'use strict';function parent() { console.log(this); } parent(1,2); // undefined作为某个对象方法调用时,this指向原创 2020-05-24 20:54:40 · 3526 阅读 · 0 评论 -
使用ES5实现iterator遍历器接口(遍历器生成函数)
const obj = { name: 'ha', age: 12, sex: 'man'};obj[Symbol.iterator] = function(){ let index = 0; const keysArr = Object.keys(this); const _this = this; return { next: function ()...原创 2020-03-28 18:47:33 · 281 阅读 · 0 评论 -
Proxy应用和Reflect
1.利用set方法,实现数据绑定,自动更新DOM<div> 请输入:<input class="inputText" type="text"> <p class="text"></p></div> const listenProp = (function () { const dom = { i...原创 2020-01-21 14:58:55 · 236 阅读 · 0 评论 -
函数柯里化
1.什么是函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。(个人见解:将一个低阶函数转换成高阶函数)举个栗子:// 普通的add函数function add(x, y) { return x + y}// Currying后function curryingAdd(x) { ...原创 2019-12-01 19:41:29 · 217 阅读 · 0 评论 -
Generator生成器函数
1.Generator函数是什么?是ES6提供的一种异步编程解决方案,使得书写异步代码更优雅。2.有什么特点?怎么用?特点:(1)function关键字与函数名之间有一个*号。(2)函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。执行Generator函数生成一个遍历器对象,用该对象调用其next()方法来遍历函数内部的状态。function...原创 2020-02-21 18:13:42 · 2317 阅读 · 0 评论 -
es6--Set实现交集、差集、并集
let arr1 = [1,2,3]; let arr2 = [2,3,4,5]; // 交集 let newArr1 = arr1.filter((ele) => { return new Set(arr2).has(ele); }) console.log('交集--', newArr1); // 差集 let newArr...原创 2020-06-15 16:45:21 · 1193 阅读 · 0 评论 -
for in和for of
1.for in得到对象的属性,数组和字符串的下标(索引)。for in循环对象的所有的可枚举属性。let obj = { a: 1, b: 2 } for (let val in obj) { console.log(val); // 输出a,b } let arr = [1, 2, 3]; for (l...原创 2019-06-05 15:59:41 · 915 阅读 · 0 评论 -
es6中的const特点
const含义存储常量的空间里面的值不能改变。特点:1.临时死区(TDZ)2.块级作用域const PI = {}; PI.name= 1; PI.name = 9; //PI存储的引用地址不可以改变,但是该地址指向的对象里的属性是可以改变的...原创 2019-02-13 22:58:56 · 772 阅读 · 0 评论 -
es6箭头函数
箭头函数的特性1.不写function关键字2.不能new(),没有原型3.参数不能重复命名4.返回值可以不写return,但有时需要配合{}5.内部arguments,this由定义时外围离他最近的非箭头函数的arguments、this决定。...原创 2019-03-06 21:51:25 · 94 阅读 · 0 评论 -
Promise浅析
1.首先,promise是什么?promise是一种异步编程的解决方法。2.为什么用promise?为了解决多个异步回调难以维护和控制的问题例如:多个定时器嵌套的做法 setTimeout(function () { console.log(1) setTimeout(function () { console.log(2) ...原创 2019-03-24 20:44:30 · 180 阅读 · 0 评论 -
js对象属性的命名规范
1.首先,我们要知道,js对象属性命名有三种方法(1)对象字面量形式命名。这时的属性,可以是任意的字符串(包括空串和空格字符串),也可以是js的变量形式。(即以字母,下划线,$开头。后面跟字母,数字,下划线和$),还可以是纯数字。 let obj = { a1: 1, a2: 'we', 'hello world!': 23, "...原创 2019-03-31 11:12:13 · 4585 阅读 · 3 评论 -
js中[1, 2, 3] == "1, 2 ,3"吗??
1.js中比较运算符"==",发生隐式类型转换。[1, 2, 3]会被转换为字符串"1, 2, 3"。所以,[1, 2, 3] == "1, 2 ,3"是对的原创 2019-03-31 15:03:00 · 3440 阅读 · 2 评论 -
对象属性的访问和赋值
1.对象属性的访问 和赋值,实际上在对象内部执行了[[Get]]和[[Put]]操作,有点类似于函数调用。那么我们可以人为的做些操作覆盖掉这两个默认的操作吗?在ES5中,我们可以使用getter和setter来改写默认操作,但是只能应用在单个属性上,不能用于整个对象。2.当对象的某个属性定义了getter和setter,或者两者都有时,JavaScript会忽略属性的value和writab...原创 2019-04-21 00:12:18 · 748 阅读 · 0 评论 -
浅谈属性描述符(es5之后)
1.在ES5之前,JavaScript语言本身并没有提供可以直接检测属性特性的方法,比如判断属性是否可读。2.如何获得一个属性的描述符,或者属性的描述符有哪些? let obj = { a: 1, obj2: { b: 2 } }Object.getOwnPropertyDescriptor(obj, 'a')...原创 2019-06-23 23:07:38 · 150 阅读 · 0 评论 -
es6中let的特点
let1.同一作用域中,声名变量时,不能重复定义。2.必须先声名,后使用。(暂时性死区)3.声名的变量不挂载到window对象上。4.在一对大括号中{},声名变量时,会产生块级作用域,变量仅在此块级作用域中有效。比如,for(){}循坏,function(){},if(){}语句等,都满足。5.看如下代码 let a = 9; { c...原创 2019-01-28 23:24:16 · 2461 阅读 · 0 评论