将 class 方法作为参数传递给 underscore.js

Pass class method as parameter to underscore.js

这是我的代码:

export class DefectResource {

   setFormattedDateForDefect(defect) {
        defect.startFormatted = this.dateConverter.convertFromUnixDate(defect.start);
        defect.finishFormatted = this.dateConverter.convertFromUnixDate(defect.finish);
        return defect;
    };

    setFormattedDateForDefects(defects) {
        return _.map(angular.fromJson(defects), this.setFormattedDateForDefect);
    };
}

我正在为对象集合调用 setFormatedDateForDefects(),此方法必须为此集合的每个方法调用 setFormattedDateForDefect()。但是不要打电话。

我知道原因是 this 关键字,在此上下文中它不是对象,但我不知道如何修复它。

如何修复代码?

您可以对方法声明使用 => 语法,这将确保它们始终绑定到 "correct" this。

export class DefectResource {
    setFormattedDateForDefect = (defect) => {
        defect.startFormatted = this.dateConverter.convertFromUnixDate(defect.start);
        defect.finishFormatted = this.dateConverter.convertFromUnixDate(defect.finish);
        return defect;
    };

    setFormattedDateForDefects = (defects) => {
        return _.map(angular.fromJson(defects), this.setFormattedDateForDefect);
    };
}