1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(class-extends): edit class-extends

This commit is contained in:
ruanyf 2018-04-03 18:35:59 +08:00
parent 02928d1820
commit 5e2ed331aa
3 changed files with 31 additions and 3 deletions

View File

@ -757,7 +757,7 @@ async function f() {
// b // b
``` ```
上面代码中,`createAsyncIterable()`返回一个拥有异步遍历器的对象,`for...of`循环自动调用这个对象的异步遍历器的`next`方法,会得到一个 Promise 对象。`await`用来处理这个 Promise 对象,一旦`resolve`,就把得到的值(`x`)传入`for...of`的循环体。 上面代码中,`createAsyncIterable()`返回一个拥有异步遍历器接口的对象,`for...of`循环自动调用这个对象的异步遍历器的`next`方法,会得到一个 Promise 对象。`await`用来处理这个 Promise 对象,一旦`resolve`,就把得到的值(`x`)传入`for...of`的循环体。
`for await...of`循环的一个用途,是部署了 asyncIterable 操作的异步接口,可以直接放入这个循环。 `for await...of`循环的一个用途,是部署了 asyncIterable 操作的异步接口,可以直接放入这个循环。

View File

@ -231,7 +231,7 @@ let b = new B();
上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。 上面代码中,属性`x`是定义在`A.prototype`上面的,所以`super.x`可以取到它的值。
ES6 规定,在子类普通方法中通过`super`调用父类的方法(此时调用的是父类普通方法,因为`super`指向父类的原型对象)时,方法内部的`this`指向当前的子类实例;在子类静态方法中通过`super`调用父类的方法(此时调用的是父类静态方法,因为`super`指向父类)时,方法内部的`this`指向当前的子类; ES6 规定,在子类普通方法中通过`super`调用父类的方法时,方法内部的`this`指向当前的子类实例
```javascript ```javascript
class A { class A {
@ -314,6 +314,34 @@ child.myMethod(2); // instance 2
上面代码中,`super`在静态方法之中指向父类,在普通方法之中指向父类的原型对象。 上面代码中,`super`在静态方法之中指向父类,在普通方法之中指向父类的原型对象。
另外,在子类的静态方法中通过`super`调用父类的方法时,方法内部的`this`指向当前的子类,而不是子类的实例。
```javascript
class A {
constructor() {
this.x = 1;
}
static print() {
console.log(this.x);
}
}
class B extends A {
constructor() {
super();
this.x = 2;
}
static m() {
super.print();
}
}
B.x = 3;
B.m() // 3
```
上面代码中,静态方法`B.m`里面,`super.print`指向父类的静态方法。这个方法里面的`this`指向的是`B`,而不是`B`的实例。
注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。 注意,使用`super`的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。
```javascript ```javascript

View File

@ -368,7 +368,7 @@ const RE_DOLLAR_PREFIX = /(?<=\$)foo/g;
“后行断言”的实现,需要先匹配`/(?<=y)x/``x`,然后再回到左边,匹配`y`的部分。这种“先右后左”的执行顺序,与所有其他正则操作相反,导致了一些不符合预期的行为。 “后行断言”的实现,需要先匹配`/(?<=y)x/``x`,然后再回到左边,匹配`y`的部分。这种“先右后左”的执行顺序,与所有其他正则操作相反,导致了一些不符合预期的行为。
首先,后行断言的组匹配,与正常情况下结果是不一样的。 首先,后行断言的组匹配,与正常情况下结果是不一样的。
```javascript ```javascript
/(?<=(\d+)(\d+))$/.exec('1053') // ["", "1", "053"] /(?<=(\d+)(\d+))$/.exec('1053') // ["", "1", "053"]