2012-08-13 3 views
0

다음 예를 살펴 이상한 행동 : 정말 완전히 출력 # 1 CONSOLE.LOG 당황하고JQuery와 이연 & CONSOLE.LOG -

var $_dfd = $.Deferred(), 
    $_x = {}; 

$_x = { 
    a: 1, 
    b: 2 
}; 

console.log($_x); // Gives {a: 1, b: 2, more: {c: 3, d: 4}} <== Weirdness here 
console.log($_x.a); // Gives 1 
console.log($_x.more); // Gives undefined 

$_dfd.pipe(function($_x) { 
    $_x.more = { 
     c: 3, 
     d: 4      
    }; 

    return $_x; 
}); 

$_dfd.resolve($_x).done(function($_x) { 
    console.log($_x); // Gives {a: 1, b: 2, more: {c: 3, d: 4}} 
}); 

. 대답해야 할 두 가지 질문이 있습니다

첫 CONSOLE.LOG 출력에서 ​​변수 $_x의 실제 상태 무엇
  1. ?

  2. console.log가 지연된 상태로 작업 할 때 변수 상태를 이해하는 안전한 방법이 아닌 경우 다른 더 좋은 대안은 무엇입니까?

고마워요!

+0

확실하지,하지만 포인트는 즉시 던질 때 빈 객체에'$ _x'를 초기화하는 없습니다 거기에 있습니다 멀리 떨어져 두 번째 대상과 동일하게 지정하십시오. – nnnnnn

+0

P. 한 가지 해결 방법은 다음과 같이 동작하는'console.log()'에 대한 것입니다 : http://stackoverflow.com/q/11118758/615754 - 한 가지 해결 방법은 객체를 기록하기 전에 복제하는 것입니다 :'console.log (JSON.stringify ($ _ x))); – nnnnnn

+0

@nnnnnn 당신이 디버깅하고 단계를 넘기면 올바른 출력을 생성합니다. 복제 트릭을 작품 사용뿐만 아니라 http://jsfiddle.net/2tfTr/ –

답변

0

는 다음 포스트에 설명 된대로, JSON.stringify()을 사용해야합니다 : 이연 문제에 대한

Bug in console.log?