我有一个问题是否有人可以回答。
代码如下:
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中可以正常使用