无法读取 class 中未定义的 属性

Cannot read property of undefined in class

我是 javascript 的新手,谁能帮我弄清楚为什么这段代码不起作用?

我有一个class,它调用了一个cordova条码扫描函数。我有一个有效的示例,但是我希望能够分离出函数(结果)和函数(错误)并使用 onSuccess(结果)和 onFailure(错误)。

我不知道为什么会这样,所以如果有人能提供帮助那就太好了。

编辑:所以我更新了基于 Stradosphere 的代码,但是我仍然得到结果未定义的错误。

完整错误信息:

未捕获的引用错误:结果未在 barcodeScanner.scanBarcode(barcodeScanner.js:10)和 HTMLButtonElement.myFunction(main.js:18)

处定义
var me = this;
class barcodeScanner {
    constructor() {
        this._barcodeResult = 0;
    }

    scanBarcode() {
        //THIS THROWS result is not defined error 
        cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));

        //THIS WORKS
        cordova.plugins.barcodeScanner.scan(
            function (result) {
                me._barcodeResult = result.text;
                alert("Barcode Scanned:" + me._barcodeResult);        
            },
            function (error) {
                alert("Scanning failed: " + error);
            }
        );
    }

    onSuccess(result) {
        this._barcodeResult = result.text;
        alert("Barcode Scanned:" + this._barcodeResult);
    }

    onFailure(error) {
        alert("Scanning failed: " + error);
    }
}

可能是您使用这个的范围问题。尝试:

var me = this; //(put this at class level)
cordova.plugins.barcodeScanner.scan(me.onSuccess, me.onFailure);

查看 docscordova.plugins.barcodeScanner.scan() 似乎希望您向其中传递一个函数。但是你是这样称呼它的:

 cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));

这是传递函数 .onSuccess(result) 结果 ,但 result 未定义,因此您收到错误消息。此外,您希望 this 成为 class 实例,但是通过将 me 定义为 class 之外的 thisme 将不等于class 实例就像你想要的那样。但无论如何你都不需要它。

尝试传入函数:

cordova.plugins.barcodeScanner.scan((result) => this.onSuccess(result),(error)=> this.onFailure(error))