大家好我正在使用对象文字模式编写一些代码,我有一个返回值的函数:
'currentLocation': function() {
var cL = 0;
return cL;
},
然后我需要从另一个函数更新变量'cL',如下所示:
teamStatus.currentLocation() = teamStatus.currentLocation() + teamStatus.scrollDistance();
这部分是另一个功能的一部分 - 但我收到一个错误说明:左侧无效分配
我猜我不能以这种方式更新变量,任何人都可以提出更好的方法或指出我正确的方向。
非常感谢任何帮助。
要添加更多代码以突出显示我要执行的操作:
'currentLocation': function() {
var cL = 0;
return cL;
},
'increaseTable': function() {
if (teamStatus.currentLocation() <= teamStatus.teamStatusTableHeight() ) {
teamStatus.currentLocation = teamStatus.currentLocation() + teamStatus.scrollDistance();
$("#tableTrackActual").animate({scrollTop: (teamStatus.currentLocation)});
$("#tableMembers").animate({scrollTop: (teamStatus.currentLocation) });
//console.log(teamStatus.currentLocation());
teamStatus.buttonRevealer();
}
}
正如您所看到的,increaseTable应该更新currentLocation的值 - 这有助于更清楚地了解我想要实现的目标。
答案 0 :(得分:1)
您正在编写teamStatus.currentLocation() =
,它调用函数teamStatus.currentLocation
并尝试分配返回值。那是无效的。你只需要teamStatus.currentLocation =
- 没有函数调用。
答案 1 :(得分:0)
函数内部的变量对该函数(以及其中定义的任何函数)完全是私有的。如果需要创建一些共享一组私有变量的函数,可以使用闭包来完成。例如:
var Thing = (function() {
var thingWideData;
function getData() {
return thingWideData;
}
function setData(newData) {
thingWideData = newData;
}
return {
getData: getData,
setData: setData
};
})();
这样做会创建一个Thing
对象,该对象具有getData
和setData
个可用功能,可以获取并设置完全私有 {{1匿名闭包包含的变量。有关此模式here和here的更多信息,尽管后者更多地是关于私有方法而非私有数据。
答案 2 :(得分:0)
您的代码产生的是:
0 = 0 + <some number>
您要更新哪个变量? cL
?您在函数中声明它,您不能从外部为它赋值。根据代码的其余部分,使用getters and setters
:
var object = {
_cL = 0,
get currentLocation() {
return this._cL;
},
set currentLocation(value) {
this._cL = value;
}
}
然后你可以这样做:
teamStatus.currentLocation = teamStatus.currentLocation + teamStatus.scrollDistance();
<强>更新强>
关于IE:如果currentLocation
实际上只是一个数字,那么将它声明为属性就足够了:
var obj = {
currentLocation: 0
}