我正在ECMAScript 2015(6)中编写一些类,并且他们有在Chrome中本机运行的实例方法。
有时当框架调用该方法时,它们将使用.apply(null,..),并且该类的实例方法将其'this'绑定为null(或其他内容)。
显然这是一种经典的JavaScript技术,但我认为作为一个类实例方法,'this'永远不会改变。
我知道胖箭头方法可以否定使用apply / call / bind调用它们但我不认为我可以用这种方式创建实例方法。
有没有办法锁定类实例方法使其'this'反弹?
例如(使用Angular 1.5.8):
class SafeZoneController {
/* @ngInject */
constructor ($scope) {
this.active = null;
// Angular uses .apply(null), so I have to negate that with .bind(this)
// but it would be nice if I didn't have to.
$scope.$on('toggleSafeZone', this.onToggleSafeZone.bind(this));
}
onToggleSafeZone() {
switch (this.active) {
case null:
this.active = 'fill';
break;
case 'fill':
this.active = 'outline';
break;
case 'outline':
this.active = null;
break;
default:
break;
}
}
}
由于