Javascript 返回带参数的方法调用时无法更新类变量
当用户单击按钮时,我正在尝试更新carousel类中的变量。由于我还需要在某个阶段更新另一个变量,我希望“cycleThrough”方法接受参数: 但是,当使用参数时,它不会更新我的变量。如果我用实际变量替换方法中的参数,它确实有效Javascript 返回带参数的方法调用时无法更新类变量,javascript,methods,scope,es6-class,Javascript,Methods,Scope,Es6 Class,当用户单击按钮时,我正在尝试更新carousel类中的变量。由于我还需要在某个阶段更新另一个变量,我希望“cycleThrough”方法接受参数: 但是,当使用参数时,它不会更新我的变量。如果我用实际变量替换方法中的参数,它确实有效 import $ from "jquery"; class carousel { constructor() { this.varOne = 0; this.len = 3; this.updateOnC
import $ from "jquery";
class carousel {
constructor() {
this.varOne = 0;
this.len = 3;
this.updateOnClick();
}
updateOnClick() {
const that = this;
$(".testButton").click(function(){
that.cycleThrough(that.varOne, that.len);
});
}
cycleThrough(toCycle, forLength) {
if(toCycle > forLength) {
return toCycle = 0;
} else {
return toCycle++;
}
}
}
export default carousel;
您的
cycleThrough
函数返回一些内容(toUpdate
),但从未使用过。国家永远不会改变
您可以更改更新单击功能,如下所示:
updateOnClick() {
$('.testButton').click(() => {
this.varOne = this.cycleThrough(this.varOne, this.len);
});
}
但实际上,这段代码或类可以进一步得到极大改进对我来说似乎很有效,我只添加了一个控制台.log
来输出cycleThrough的结果
:我必须更新cycleThrough方法中的变量以匹配参数,但我仍然没有更新this.len变量。我理解这不是最好的方法,但从学术角度来看,为什么这不起作用?如果你想增加varOne
或len
,那么你需要实际增加那些参考。当您调用that.cycleThrough
时,将复制传递给它的参数。未传递引用
,而循环通过
函数在“新”副本上工作。不在this.len
或this.varOne
上。要更新varOne
或len
您需要将其指定为@jkris answered,或更改返回循环
行,以便它们更新this.len
或this.varOne
。要克服此
的关闭问题,只需将代码更改为:$(“.testButton”)。单击(()=>{
并删除所有
表示歉意的,“toUpdate”变量应为“toCycle”参数。