Typescript 如何在jquery回调中访问“this”范围和私有方法?
考虑下面的代码。在click回调中,我试图访问此的color css属性。同时,我需要调用一个私有方法setResponsiveClass,这只能通过使用this.setResponsiveClass来实现。代码显然不会编译,因为它的作用域是事件处理程序Typescript 如何在jquery回调中访问“this”范围和私有方法?,typescript,Typescript,考虑下面的代码。在click回调中,我试图访问此的color css属性。同时,我需要调用一个私有方法setResponsiveClass,这只能通过使用this.setResponsiveClass来实现。代码显然不会编译,因为它的作用域是事件处理程序 class SomeClass { constructor { $('.someclass').on('click', function() { var color = $(this).css('color')
class SomeClass {
constructor {
$('.someclass').on('click', function() {
var color = $(this).css('color');
console.log(color);
this.setResponsiveClass();
});
}
private setResponsiveClass() {
console.log('hello')
}
}
这提供了通过保持当前代码来实现事件作用域的方法,或者通过转换为胖箭头语法来实现类作用域的方法
如何从同一函数中的事件作用域和私有方法访问此函数 你可以用这种方式触发它 解决方案1。 解决方案2。
我希望这能帮助您解决方案1不起作用,因为TypeScript编译器将其重新定义为_this=this。解决方案2确实有效,但我们基本上回到了JavaScript技巧。我希望TypeScript能有一个更优雅的解决方案来解决这个问题。
class SomeClass {
constructor {
$('.someclass').on('click', = () => {
var color = $(this).css('color');
console.log(color);
this.setResponsiveClass();
});
}
private setResponsiveClass() {
console.log('hello')
}
}
class SomeClass {
constructor {
var self = this; <====
$('.someclass').on('click', function() {
var color = $(this).css('color');
console.log(color);
self.setResponsiveClass(); <====
});
}
private setResponsiveClass() {
console.log('hello')
}
}