获得徽章 12
皙墨
VIP.5 如鱼得水
关注了
一枚前端
皙墨
VIP.5 如鱼得水
关注了
一枚前端
皙墨
VIP.5 如鱼得水
关注了
一枚前端
皙墨
VIP.5 如鱼得水
关注了
一枚前端
Class 可以通过extends关键字实现继承,让子类继承父类的属性和方法。extends 的写法比原型链继承,要清晰方便很多。ES6 中子类必须在constructor()方法中调用super(),否则就会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,添加子类自己的实例属性和方法。如果不调用super()方法,子类就得不到自己的this对象。
展开
评论
constructor() 方法是类的默认方法,通过 new 命令生成对象实例时,自动调用该方法。一个类必须有 constructor() 方法,如果没有显式定义,一个空的 constructor() 方法会被默认添加。constructor() 方法默认返回实例对象(即this),完全可以指定返回另外一个对象。类必须使用 new 调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用 new 也可以执行。
展开
评论
Promise.reject(reason) 方法也会返回一个新的 Promise 实例,实例的状态为rejected。Promise.reject() 方法的参数,会原封不动地作为 reject 的理由,变成后续方法的参数。
评论
有时候我们需要将现有对象转为 Promise 对象,此时 Promise.resolve() 方法就起到这个作用。Promise.resolve()方法的参数分成四种情况,如果参数是 Promise 实例,那么Promise.resolve 将不做任何修改、原封不动地返回这个实例;如果参数是一个 thenable 对象,Promise.resolve() 方法会将这个对象转为 Promise 对象,然后就立即执行 thenable 对象的then()方法;如果参数不是具有then()方法的对象,或根本就不是对象, Promise.resolve() 方法返回一个新的 Promise 对象,状态为 resolved ;如果不带有任何参数,Promise.resolve()方法允许调用时不带参数,直接返回一个 resolved 状态的 Promise 对象;所以,希望得到一个 Promise 对象,比较方便的方法就是直接调用 Promise.resolve() 方法。
展开
评论
Promise.any()方法,接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例返回。只要参数实例有一个变成 fulfilled 状态,包装实例就会变成 fulfilled 状态;如果所有参数实例都变成 rejected 状态,包装实例就会变成 rejected 状态。Promise.any() 跟 Promise.race() 方法很像,只有一点不同,就是 Promise.any() 不会因为某个 Promise 变成 rejected 状态而结束,必须等到所有参数 Promise 变成 rejected 状态才会结束。
展开
评论
有时候,我们希望等到一组异步操作都结束了,不管每一个操作是成功还是失败,再进行下一步操作。为了解决这个问题,ES2020 引入了 Promise.allSettled() 方法,用来确定一组异步操作是否都结束了(不管成功或失败)。它的名字叫做 Settled ,包含了 fulfilled 和 rejected 两种情况。Promise.allSettled()方法接受一个数组作为参数,数组的每个成员都是一个 Promise 对象,并返回一个新的 Promise 对象。只有等到参数数组的所有 Promise 对象都发生状态变更(不管是fulfilled还是rejected),返回的 Promise 对象才会发生状态变更。
展开
评论
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。Promise.race()方法的参数与 Promise.all() 方法一样,如果不是 Promise 实例,就会先调用下面讲到 Promise.resolve() 方法,将参数转为 Promise 实例,再进一步处理。
评论
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。如果作为参数的 Promise 实例,自己定义了 catch 方法,那么它一旦被 rejected ,并不会触发 Promise.all() 的 catch 方法。
评论
Promise.prototype.catch() 方法是 .then(null, rejection) 或 .then(undefined, rejection) 的别名,用于指定发生错误时的回调函数。Promise 对象后面要跟 catch() 方法,这样可以处理 Promise 内部发生的错误。catch() 方法返回的还是一个 Promise 对象,因此后面还可以接着调用 then() 方法。
展开
评论
Promise 实例具有then方法,then方法是定义在原型对象Promise.prototype上的。它的作用是为 Promise 实例添加状态改变时的回调函数。then方法的第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数,它们都是可选的。
评论
Promise有两个特点
1. 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。
展开
评论
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大
简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息
Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理
展开
评论
WeakMap结构与Map结构类似,也是用于生成键值对的集合,但是它们之间有两点区别
1. WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名
2. WeakMap的键名所指向的对象,不计入垃圾回收机制
评论
Map与其他数据结构间的互相转换
1.Map 转为数组,使用扩展运算符
2.数组 转为 Map,将数组传入,就可以转为 Map
3.Map 转为对象,如果所有 Map 的键都是字符串,它可以无损地转为对象,如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名
4.对象转为 Map,对象转为 Map 可以通过Object.entries()
5.Map 转为 JSON 分两种情况,一种是 Map 的键名都是字符串,这时可以选择转为对象 JSON,另一种是 Map 的键名有非字符串,这时可以选择转为数组 JSON
6.JSON 转为 Map,正常情况所有键名都是字符串,但有种特殊情况,整个 JSON 就是个数组,且每个数组成员本身,又是一个有两个成员的数组,这时它可以一一对应地转为 Map
展开
评论
Map 结构原生为我们提供三个遍历器生成函数和一个遍历方法
Map.prototype.keys():返回键名的遍历器
Map.prototype.values():返回键值的遍历器
Map.prototype.entries():返回所有成员的遍历器
Map.prototype.forEach():遍历 Map 的所有成员
展开
评论
下一页