【问题标题】:Calling a class method from the constructor从构造函数调用类方法
【发布时间】:2016-05-31 23:38:13
【问题描述】:

从构造函数调用类方法时出现错误。是否可以从构造函数中调用方法?我尝试从派生类的构造函数中调用基类方法,但仍然出现错误。

'use strict';

class Base {
    constructor() {
        this.val = 10;
        init();
    }

    init() {
        console.log('this.val = ' + this.val);
    }
};

class Derived extends Base {
    constructor() {
        super();
    }
};

var d = new Derived();

➜ js_programs 节点 class1.js /media/vi/DATA/programs/web/js/js_programs/class1.js:7 在里面(); ^

ReferenceError: init 未定义 在 Derived.Base (/media/vi/DATA/programs/web/js/js_programs/class1.js:7:9) 在派生(/media/vi/DATA/programs/web/js/js_programs/class1.js:18:14) 在对象。 (/media/vi/DATA/programs/web/js/js_programs/class1.js:23:9) 在 Module._compile (module.js:435:26) 在 Object.Module._extensions..js (module.js:442:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:311:12) 在 Function.Module.runMain (module.js:467:10) 启动时 (node.js:136:18) 在 node.js:963:3 ➜ js_programs

【问题讨论】:

  • 也许标题应该是Calling a method from constructorCalling a member function from constructorclass methodstatic 方法。

标签: javascript ecmascript-6


【解决方案1】:

您正在调用 函数 init(),而不是 Base 或当前对象的 方法 init。当前作用域或任何父作用域中不存在此类函数。您需要引用您的对象:

this.init();

【讨论】:

    【解决方案2】:

    你缺少this关键字:

    this.init();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 2018-09-25
      • 2011-03-05
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      相关资源
      最近更新 更多