2012-06-29 2 views
0

log.original_fields는 항상 null입니다. 왜?자바 스크립트 할당 연산자가 작동하지 않습니다.

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

그것은 새로운 속성을 바꾸게하지만 그것은 기존의 속성으로 아무것도 할 수 없다. 개체는 웹 SQL에서 나오는 레코드입니다. http://i1120.photobucket.com/albums/l493/powerfulcrunch/wth.png – user1472219

답변

0

적어도 개체를 반환하지 않고 함수를 매개 변수로받는 개체를 수정하는 것이 바람직하지는 않습니다. 더 나은 방법은 함수를 로그 객체의 메소드로 만드는 것입니다.

like logObject.updateChangeLog (currentRecord); (! self.original_fields)

updateChangeLog는 self.original_fields의 = 기록을 경우 ... 를이 (가) 포함 것이다 ... logObject original_fields를 false 또는 nil로 초기화해야합니다.

+0

나는 당신이 말하는 것이 옳다고 생각합니다. 어쩌면 스택에서 오브젝트를 변경할 수 없으므로 스택에서 더 낮은 것을 엉망으로 만들지 않거나 비동기 호출과 관련이 있습니다. 어느 쪽이든, 기능의 시작 부분에 로그를 복제하면 문제가 해결됩니다. JSON.parse (JSON.stringify (object))를 반환합니다. – user1472219