2012-06-29 75 views
0

log.original_fields始终为空。为什么?Javascript赋值运算符不起作用

var updateChangeLog = function(log, currentRecord) { 
    var records, record; 
    if(!log.original_fields) { 
     records = ["a","b"]; 
     log["original_fields"] = records; 
     // log.original_fields = records; // doesnt work either 
     debugger; 
    } 
} 
+2

你传递给'updateChangeLog'函数的是什么? “log”是一个对象吗? – jackwanders

+1

是的,你必须设置错误的东西,为我工作:http://jsfiddle.net/AMnNx/ – TheZ

+0

它让我改变新的属性,但我不能做任何事情与现有的属性。该对象是来自web sql的记录。 http://i1120.photobucket.com/albums/l493/powerfulcrunch/wth.png – user1472219

回答

0

我不薄这是很好的做法,修改对象的功能临危作为PARAM,至少不用再返回对象。更好的方法是使该函数成为日志对象的一种方法。

like logObject.updateChangeLog(currentRecord);

的updateChangeLog将containt ... 如果 self.original_fields =记录(self.original_fields!); ... 但记得初始化logObject original_fields为false或nil。

+0

我想你在说什么是对的。也许它不会让你改变堆栈上的对象,所以你不会搞乱堆栈中较低的东西/与异步调用有关。无论如何,克隆日志功能的开始解决了问题。返回JSON.parse(JSON.stringify(object)) – user1472219