javascript

javascript

ES6 Class 继承

简单谈谈 ES6 规定了 extends 关键字,用该关键字就可以实现继承,对比 ES5 通过修改原型链来实现继承,可以说简洁了不少。 class Point { }; class ColorPoint extends Point { constructor(x, y, color) { // 调用父类的constructor(x, y) super(x, y); this.color = color; } toString() { // 调用父类的toString() return this.color + ' ' + super.toString(); } } 当然子类如果没有定义 constructor 方法,这个方法会被默认添加。 class ColorPoint extends Point { } // 等同于 class ColorPoint extends

By Breeze

javascript

ES6 Generator 的异步使用技巧

异步 在 JavaScript 界,异步是获取数据的主旋律,大概有以下几种方式: * callback 回调 * Promise * event 事件 简单说说以上 3 种模式: 回调 将需要执行的函数传入异步调用内,在异步调用结束后,主动执行传入的函数。 function doSomeAsync(callback) { let data = {/* 数据 */}; setTimeout(() => { callback(data); }); } doSomeAsync((data) => { // do some thing doSomeAsync((data) => { // do some thing }); }); 但试想一下,如果说回调之中还有回调,那么将会形成一个类似金字塔的结构(回调地狱),代码将变难以维护。 Promise 出现了回调地狱,我们得解决,这就出现了 Promise,

By Breeze

javascript

ES^ Decoretors

类的修饰 许多面向对象的语言都有修饰器( Decorator )函数,用来修改类的行为。 @testable class MyTestableClass { // ... } function testable(target) { target.isTestable = true } MyTestableClass.isTestable; // true testable 函数即为修饰器,为 MyTestableClass 类添加了名为 isTestable 的静态属性。 一个修饰器可以理解为包装之后跟着的类的函数。 @decorator class A {} // 等同于 class A {} A = decorator(A) || A 也就是说,修饰器是一个对类进行处理的函数。修饰器函数的第一个参数,就是所要修饰的目标类。 当然只要在 @ 符号后是一个函数即可,因此为了可以生成更加灵活的修饰器,我们可以通过函数返回函数的形式来编写修饰器。 function testable(isTestable) { return

By Breeze