Javascript 不确定如何将方法定义转换为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) 我不确

我目前正在将主干应用程序转换为ES6语法,例如:

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)