Javascript“ this”绑定

时间:2019-04-12 14:10:36

标签: javascript angular typescript this bind

我有一个问题是否有人可以回答。

代码如下:

https://stackblitz.com/edit/angular-chxuhg

demo.service.ts中有一个服务,它有两种方法,都被记录下来,一种方法使用了Function.prototype.bind,一种是箭头功能,在控制台中我可以运行'someOtherMethod'而无需任何问题,但'someMethod'会引发错误,但是如果我使用fn.call(instance)运行它,

为什么会这样?

这是主要的代码示例

import { Injectable } from '@angular/core';

@Injectable()
export class ExampleService {
  private demoParameter = 'just some value';

  constructor() {
    console.log('Instance', this);
    const newFn = this.someMethod.bind(this);
    console.log('Manual binded Method', newFn);
    console.log('Auto binded method', this.someOtherMethod);
  }

  someMethod() {
    console.log(this.demoParameter);
  }

  someOtherMethod = () => {
    console.log(this.demoParameter);
  } 

}

即使不是这样,它也被标记为重复,这是在您将已登录的函数关联到全局变量temp1时出现的Chrome错误,在Firefox中可以正常使用

0 个答案:

没有答案