ES6 箭头函数和 jQuery 小部件工厂
ES6 Arrow Functions and 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", {
// default options
options: {
red: 255,
green: 0,
blue: 0
},
// The constructor
_create: () => {
this.options.green = 128;
}
});
那么,我该如何引用局部变量,因为它现在没有指向它们?
谢谢。
看起来 jquery 小部件工厂没有以任何其他方式传入元素,因此您可以只使用常规的匿名函数语法。请注意,常规语法本身并不糟糕,因为您需要 this
上下文,所以您唯一的选择是正常方式 ().
不要将箭头函数用于您希望 this
作为您的对象的方法,或者用于调用者明确将 this
设置为您需要的对象的方法。
箭头函数不仅仅是语法快捷方式。它们在执行时将 this
的值更改为 this
的词法值,因此您应该只在需要 this
的新行为或不使用时使用箭头函数this
完全没有。
在您的情况下,您应该使用常规函数定义,而不是箭头定义,以便调用者可以适当地向您传递 this
的值。
我在我的项目中使用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", {
// default options
options: {
red: 255,
green: 0,
blue: 0
},
// The constructor
_create: () => {
this.options.green = 128;
}
});
那么,我该如何引用局部变量,因为它现在没有指向它们?
谢谢。
看起来 jquery 小部件工厂没有以任何其他方式传入元素,因此您可以只使用常规的匿名函数语法。请注意,常规语法本身并不糟糕,因为您需要 this
上下文,所以您唯一的选择是正常方式 (
不要将箭头函数用于您希望 this
作为您的对象的方法,或者用于调用者明确将 this
设置为您需要的对象的方法。
箭头函数不仅仅是语法快捷方式。它们在执行时将 this
的值更改为 this
的词法值,因此您应该只在需要 this
的新行为或不使用时使用箭头函数this
完全没有。
在您的情况下,您应该使用常规函数定义,而不是箭头定义,以便调用者可以适当地向您传递 this
的值。