File tree Expand file tree Collapse file tree 3 files changed +31
-3
lines changed Expand file tree Collapse file tree 3 files changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -757,7 +757,7 @@ async function f() {
757757// b
758758```
759759
760- 上面代码中,` createAsyncIterable() ` 返回一个拥有异步遍历器的对象 ,` for...of ` 循环自动调用这个对象的异步遍历器的` next ` 方法,会得到一个 Promise 对象。` await ` 用来处理这个 Promise 对象,一旦` resolve ` ,就把得到的值(` x ` )传入` for...of ` 的循环体。
760+ 上面代码中,` createAsyncIterable() ` 返回一个拥有异步遍历器接口的对象 ,` for...of ` 循环自动调用这个对象的异步遍历器的` next ` 方法,会得到一个 Promise 对象。` await ` 用来处理这个 Promise 对象,一旦` resolve ` ,就把得到的值(` x ` )传入` for...of ` 的循环体。
761761
762762` for await...of ` 循环的一个用途,是部署了 asyncIterable 操作的异步接口,可以直接放入这个循环。
763763
Original file line number Diff line number Diff line change @@ -231,7 +231,7 @@ let b = new B();
231231
232232上面代码中,属性` x ` 是定义在` A.prototype ` 上面的,所以` super.x ` 可以取到它的值。
233233
234- ES6 规定,在子类普通方法中通过` super ` 调用父类的方法(此时调用的是父类普通方法,因为 ` super ` 指向父类的原型对象)时, 方法内部的` this ` 指向当前的子类实例;在子类静态方法中通过 ` super ` 调用父类的方法(此时调用的是父类静态方法,因为 ` super ` 指向父类)时,方法内部的 ` this ` 指向当前的子类;
234+ ES6 规定,在子类普通方法中通过` super ` 调用父类的方法时, 方法内部的` this ` 指向当前的子类实例。
235235
236236``` javascript
237237class A {
@@ -314,6 +314,34 @@ child.myMethod(2); // instance 2
314314
315315上面代码中,` super ` 在静态方法之中指向父类,在普通方法之中指向父类的原型对象。
316316
317+ 另外,在子类的静态方法中通过` super ` 调用父类的方法时,方法内部的` this ` 指向当前的子类,而不是子类的实例。
318+
319+ ``` javascript
320+ class A {
321+ constructor () {
322+ this .x = 1 ;
323+ }
324+ static print () {
325+ console .log (this .x );
326+ }
327+ }
328+
329+ class B extends A {
330+ constructor () {
331+ super ();
332+ this .x = 2 ;
333+ }
334+ static m () {
335+ super .print ();
336+ }
337+ }
338+
339+ B .x = 3 ;
340+ B .m () // 3
341+ ```
342+
343+ 上面代码中,静态方法` B.m ` 里面,` super.print ` 指向父类的静态方法。这个方法里面的` this ` 指向的是` B ` ,而不是` B ` 的实例。
344+
317345注意,使用` super ` 的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。
318346
319347``` javascript
Original file line number Diff line number Diff line change @@ -368,7 +368,7 @@ const RE_DOLLAR_PREFIX = /(?<=\$)foo/g;
368368
369369“后行断言”的实现,需要先匹配` /(?<=y)x/ ` 的` x ` ,然后再回到左边,匹配` y ` 的部分。这种“先右后左”的执行顺序,与所有其他正则操作相反,导致了一些不符合预期的行为。
370370
371- 首先,”后行断言“的组匹配 ,与正常情况下结果是不一样的。
371+ 首先,后行断言的组匹配 ,与正常情况下结果是不一样的。
372372
373373``` javascript
374374/ (?<=(\d + )(\d + ))$ / .exec (' 1053' ) // ["", "1", "053"]
You can’t perform that action at this time.
0 commit comments