我使用nodejs 6.10.3的代码显示在下面,我对es6类继承有问题。

'use strict';

class Foo {
    constructor() {}
    hi() {
        console.log('foo.hi');
        this._hi();
    }
    _hi() {
        console.log('foo._hi');
    }
}

class Goo extends Foo {
    constructor() {
        super();
    }
    hi() {
        console.log('goo.hi');
        super.hi();
    }
    _hi() {
        console.log('goo._hi');
    }
}

let goo = new Goo();
goo.hi();


console.log输出是这个。

// goo.hi
// foo.hi
// goo._hi


但是我需要这个。

// goo.hi
// foo.hi
// foo._hi


我能怎么做?

最佳答案

super将初始化this



'use strict';

class Foo {
    constructor() {}
    hi() {
        console.log('foo.hi');
        this._hi();
    }
    _hi() {
        console.log('foo._hi');
    }
}

class Goo extends Foo {
    constructor() {
        super();
    }
    hi() {
        console.log('goo.hi');
        Foo.prototype.hi();
    }
    _hi() {
        console.log('goo._hi');
    }
}

let goo = new Goo();
goo.hi();

09-25 19:35