javascript - 如何更改 `this` 关键字的行为

标签 javascript angular typescript

<分区>

How to change the behavior of `this' in the below code. Currently, it is pointing to a click event on the HighChart. I want `this` here to refer to function in the class.
Hello.ts
 getPlotBands() {
.....
        click: function(e) {
          for(var p = 0; p < this.axis.plotLinesAndBands.length; p++) {
            var currentPlotBand = this.axis.plotLinesAndBands[p]; 
            currentPlotBand.svgElem.attr({fill: currentPlotBand.options.color});
            }
            this.svgElem.attr({fill:'#660066'});
            // this.fromSystemTime = String(new Date(this.options.from));
            this.fromSystemTime = moment(this.options.from).format("MM/DD/YY h:mm:ss");
            this.toSystemTime = String(new Date(this.options.to));
            console.log(moment(this.options.from).format("MM/DD/YY h:mm:ss"));
            (<HTMLInputElement>document.getElementById('fromSys')).value = 
                                      moment(this.options.from).zone("America/Los_Angeles").format('MM/DD/YY HH:mm');
            (<HTMLInputElement>document.getElementById('toSys')).value = 
                                         moment(this.options.to).zone("America/Los_Angeles").format('MM/DD/YY HH:mm');
            console.log('to date -', moment(1556906400000).utcOffset(-420).format('MM/DD/YY HH:mm'));  
            console.log(moment(1556906400000).zone("America/Los_Angeles").format('MM/DD/YY HH:mm'));
            // console.log('from', this.options.from);   
            // console.log('to', this.options.to);     
            console.log(this.options.from + 'and' + this.options.to)
            tagStartTimeForDetailsPage = +moment(this.options.from);
            tagEndTimeForDetailsPage = +moment(this.options.to);
`  this.storedResponse.setTagStartTimeForDetailsPage(+tagStartTimeForDetailsPage);
  this.storedResponse.setTagEndTimeForDetailsPage(+tagEndTimeForDetailsPage); 
        }` }
    I want here `this' to refer my storedResponse service injected in the class not chart obj.

The below 2 lines are giving the error 
`this.storedResponse.setTagStartTimeForDetailsPage(+tagStartTimeForDetailsPage);
  this.storedResponse.setTagEndTimeForDetailsPage(+tagEndTimeForDetailsPage); `

上面的代码在 Hello.Ts 文件中,有 1 个方法叫做 getplotBands()。所以在这里我需要改变它的上下文。

知道如何完成它吗?

最佳答案

使用箭头函数代替 function 关键字:

click: (e) => {
  // ...
}

这里有很多关于这个的问题,但是找不到一个:)

关于javascript - 如何更改 `this` 关键字的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56672640/

相关文章:

javascript - 忽略未声明的变量 (TypeScript)

javascript - 使用来自 JavaScript 的数据源设置类

javascript - 尝试打印页面时文本被 chop

Angular2 在组件之间共享数据

angular - 有没有办法知道 msal 重定向何时正在进行?

typescript - 是否可以在没有 "is not assignable to parameter of type ' never'"错误的情况下使用具有不同联合类型的数组元素?

javascript - Jquery/Javascript - 构建选择菜单的最有效方法?

javascript - 在不复制的情况下拆分数组对象

javascript - 在 typescript Angular 2中创建对象实例

reactjs - 基于输入对象的返回类型 Typescript 自动完成