【发布时间】:2013-09-16 13:21:59
【问题描述】:
我有一个以 JSON 对象为值的变量。我直接将此变量分配给其他变量,以便它们共享相同的值。它是这样工作的:
var a = $('#some_hidden_var').val(),
b = a;
这可行,并且两者具有相同的价值。我使用mousemove 事件处理程序在我的应用程序中更新b。单击按钮时,我想将b 恢复为原始值,即存储在a 中的值。
$('#revert').on('click', function(e){
b = a;
});
在此之后,如果我使用相同的 mousemove 事件处理程序,它会同时更新 a 和 b,而之前它只更新 b,正如预期的那样。
我被这个问题难住了!这里有什么问题?
【问题讨论】:
-
请显示您的鼠标移动处理程序。另外,鉴于
a是从.val()设置的,我假设它是JSON(一个字符串),而不是一个对象——对吗?您是否在某些时候使用JSON.parse(a)来获取实际对象? -
是的,它是一个字符串,但我使用
$.parseJSON将它转换为一个对象。结构:{ 'key': {...}, 'key': {...}, ...}。抱歉不能在这里发布任何代码,不允许在我的工作场所! -
那么
a是一个对象吗? -
看起来是一个范围问题。
a是一个全局变量吗? -
您显示的代码只有字符串。如果您在谈论对象,那么多个变量可以引用同一个对象,因此该对象可以通过任何变量进行变异。因此,如果没有看到更多操纵变量的代码(
$.parseJSON()出现在哪里?),很难说问题出在哪里。关于您的工作场所规则,您不必完整发布实际的真实代码,只需提出一个更短、更通用的示例来演示该问题(理想情况下,包括指向jsfiddle.net 的现场演示的链接) .
标签: javascript jquery