Javascript 不确定如何将方法定义转换为ES6
我目前正在将主干应用程序转换为ES6语法,例如:Javascript 不确定如何将方法定义转换为ES6,javascript,backbone.js,ecmascript-6,Javascript,Backbone.js,Ecmascript 6,我目前正在将主干应用程序转换为ES6语法,例如: action: function(e){}, 变成 action(e) {} 但是,现在我有以下代码: throttleEvent: _.throttle(function(e) { //do stuff }, 500); } 我似乎找不到如何将其转换为有效的语法。 我试过了 及 但这些都没有奏效 请帮助将其转换为有效语法 试试这种语法: _.throttle(() => //Do stuff, 5000) 我不确
action: function(e){},
变成
action(e) {}
但是,现在我有以下代码:
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500);
}
我似乎找不到如何将其转换为有效的语法。
我试过了
及
但这些都没有奏效
请帮助将其转换为有效语法 试试这种语法:
_.throttle(() => //Do stuff, 5000)
我不确定这个简短的语法是否适用于你的例子 让我们看看你的开始
action: function(e){},
您有一个对象,该对象有一个名为“action”的属性,该属性包含一个函数,该函数稍后可以由obj.action()调用
现在来看你的例子
throttleEvent: _.throttle(function(e) {}
同样,您有一个对象,它有一个名为throttleEvent的属性。但主要区别在于价值。该值是函数throttle()的返回值
摘自文件()
创建一个限制函数,该函数最多每等待毫秒调用一次func
因此,您的属性实际上包含从库中返回的函数。这就解释了为什么第二种方法不起作用。因为在此版本中,每次调用对象属性时,都会创建一个新的节流函数。
(对于您的第一个解决方案,我认为这是无效的语法)
我认为,如果你真的想使用简短的语法,最好的方法是,先将throttle函数赋值给一个变量,然后再使用它
举个例子
const throttleFunction = _.throttle((event) => {
//do stuff
}, 500);
const obj = {
throttleEvent(event): any {
return throttleFunction(event);
},
};
但是接下来要决定ES6语法在这种情况下是否有意义,或者您是否坚持使用原始版本
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500)
仅仅因为有不同的语法可用,并不意味着您必须始终使用新语法。在某些情况下,“旧的”实际上更有意义我不确定。。。。但请尝试第二次尝试,但不返回
keyword@Kenny,这不起作用,它可以访问throttleEvent方法,但从来没有到达u.throttle方法内部。感谢您的清晰解释,不仅解释了如何,还解释了为什么。我想我会坚持把函数赋值给一个变量,因为在原始版本中,我得到了一个语法错误:uncaughtsyntaxerror:Unexpected-token:不客气。原始版本中有一个带括号的语法错误。可能是复制粘贴相关的。我更新了我的答案。在我的代码中,语法是有效的。语法错误可能在另一个地方。在使用throttle包装函数时,要记住一点,如果包装不正确,上下文将丢失。因此,这可能不是您所期望的。
const throttleFunction = _.throttle((event) => {
//do stuff
}, 500);
const obj = {
throttleEvent(event): any {
return throttleFunction(event);
},
};
throttleEvent: _.throttle(function(e) {
//do stuff
}, 500)