如何解决ES6箭头函数和jQuery Widget Factory
我在项目中使用jQuery Widget Factory,并且尝试使用ES6语法,包括箭头功能。
那么,如何在小部件的方法内部引用this
?
作为一个假设的例子,我想转换这段代码
$.widget( "custom.colorize",{
// default options
options: {
red: 255,green: 0,blue: 0
},// The constructor
_create: function() {
this.options.green = 128;
}
});
这段代码(请注意,我将_create
函数更改为箭头函数,这将引发错误)
$.widget( "custom.colorize",// The constructor
_create: () => {
this.options.green = 128;
}
});
那么,我现在该如何指向局部变量呢?
谢谢。
解决方法
看起来jquery小部件工厂没有以任何其他方式传递元素,因此您可以只使用常规的匿名函数语法。请注意,常规语法并不是天生就差,并且因为您需要一个[<-
上下文,所以唯一的选择就是常规方式(since arrow functions can't have a this
value binded)。
对于要使this
成为对象的方法或调用者将this
明确设置为您需要的方法,请勿使用箭头功能。
箭头功能不只是语法快捷方式。它们在执行时会将this
的值更改为this
的词法值,因此,仅当您想要this
的新行为或不使用时,才应使用箭头函数完全this
。
在这种情况下,应使用常规函数定义而不是箭头定义,以便调用者可以适当地将this
的值传递给您。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。