JavaScript Es6 Class'扩展'丢失抽象类方法

时间:2017-05-24 00:55:19

标签: javascript class ecmascript-6 extends

我是ES6的新手并且正在重构代码以使用继承但是遇到了我不理解的错误。

请有人帮忙解释一下,当添加到数组时,子类无法访问父类的方法:

class abstract1 {
    constructor(){
    }

    method1_2(){
        console.log('method1_2');
    }

    method1_1(){
        console.log('method1_1');
        this.method1_2();
    }
}

class test extends abstract1{
    constructor(){
        super();
    }

    method2_1(){
        console.log('method2_1');
        this.method1_1();
    }
}
let tmp = new test();
tmp.method2_1();

//All good with world, result:
// method2_1
// method1_1
// method1_2

console.log('Now Run from a callback');
let eventActions = [];
eventActions.push({test:tmp.method2_1});
eventActions[0].test();

//Not good with world:
// method2_1
// Uncaught TypeError: this.method1_1 is not a function
//    at Object.method2_1 [as test] (<anonymous>:22:8)
//    at <anonymous>:35:17

1 个答案:

答案 0 :(得分:0)

您错过了对bind的电话:

eventActions.push({test:tmp.method2_1.bind(tmp)});