Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

继承 Promise 的类

  ES6 的 class 并不是简单的语法糖,有些东西是通过原型继承无法实现的。比如一个原生的 Promise 对象就无法通过原型继承实现。而通过 class 从 Promise 上派生出的类也不仅仅是可以原型继承那样可以调用原型上的方法那么简单,使用时整条 Promise 链都将会是派生出来的那个类。
  比如下面的例子,经过一次 then 后 instanceof 依然是 true <script> class MyPromise extends Promise {} let a = new MyPromise(resolve => { resolve(123); }); let b = a.then(() => {}); console.log(a instanceof MyPromise); // true console.log(b instanceof MyPromise); // true </script>   如果给 MyPromise 增加构造函数的话每次创建实例都会被调用(不仅局限于 then,所有情况都会)。这样我们可以很容易地劫持并监控原生 Promise 对象。比如: <script> Promise = class extends Promise { constructor(...args) { console.log(args); super(...args); } }; Promise.resolve(123).then(() => {}); </script>
网名:
50.16.97.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^