无法从构造函数调用方法

时间:2017-01-13 13:33:06

标签: javascript typescript

从同一个类中的构造函数调用private / public方法会给我一个错误

  

未捕获的TypeError:this.setEventHandler不是函数       在Object.Init(Init.ts:4)       时间:3:16

export class Init {

constructor(private connectBtn: HTMLElement) {
    this.setEventHandler();
}
public setEventHandler() {
    this.connectBtn.onclick = (e) => {
        this.openConnectWindow();
    }
}
private openConnectWindow() {
    console.log("OPEN SESAME")
}
}

这是已编译的javascript

var Init = (function () {
function Init(connectBtn) {
    this.connectBtn = connectBtn;
    this.setEventHandler();
}
Init.prototype.setEventHandler = function () {
    var _this = this;
    this.connectBtn.onclick = function (e) {
        _this.openConnectWindow();
    };
};
Init.prototype.openConnectWindow = function () {
    console.log("OPEN SESAME");
};
return Init;
}());

编辑:这适用于图书馆。

我尝试使用var mylib = new MyLibraryName(),但我只得到“MyLibraryName不是构造函数”。

我用webpack

启动root对象
output: {
    path: path.join(__dirname, "lib"),
    filename: outputFile,
    library: libraryName,
    libraryTarget: "umd",
    umdNamedDefine: true
},

1 个答案:

答案 0 :(得分:2)

将您正在调用的方法从其他方法更改为此

export class Init {

constructor(private connectBtn: HTMLElement) {
    this.setEventHandler();
}

public setEventHandler = () => {
    this.connectBtn.onclick = (e) => {
        this.openConnectWindow();
    }
}

private openConnectWindow = () => {
    console.log("OPEN SESAME")
}
}