2009-08-17 4 views
3

나는 최근 chaning jQuery를 관련하여 folloiwng과 같은 질문을했다 :변수에 jQuery 객체를 저장하는 것이 불리 할 수 ​​있습니까?

Is there a preferred way of formatting jQuery chains to make them more readable?

사람들의 숫자는 아마 내가 문 내에서 체인의 양을 감소 제안에 대답 대신 객체를 저장 변수를 지니고있는 것이 나에게 의미가 있습니다.

그러나 체인의 객체가 이미 스택 (일종의 스택)에 보관되어 있으므로 더 많은 메모리를 사용하여 효율적으로 다시 저장하지 않는 변수에 결과 캐싱/저장이 가능합니까?

게시물 중 하나에 대한 의견은 실적이 너무 높지는 않은 것으로 보였으므로 더 읽기 쉽도록 제안 된대로 캐시 해 드리겠습니다.

캐싱을 사용하는 경우 .end().andSelf()의 유용성을 제한하지 않습니까?

답변

8

일반적으로 객체는 참조로 저장됩니다 (메모리의 위치에 대한 포인터). 같은 객체를 가지고있는 두 변수는 모두 객체의 데이터를 복제하지 않습니다. 실제 객체 데이터가있는 메모리의 동일한 위치에 대한 포인터를 보유합니다. 따라서 변수에 객체를 저장하는 것은 성능에 큰 타격을주지 않을 것입니다. 아무것도 중요하지 않습니다.

+0

흥미 롭습니다. 따라서 숫자를 문자열로 캐스팅하면 String (number)이 참조가 될까요? –

+1

아니요. String (123)은 객체가 아닌 문자열 리터럴을 반환합니다. 따라서 참조가 필요하지 않습니다. String 객체를 원한다면 '123'이라는 내용으로 새로운 String 객체를 생성하기 위해'new String (123)'이 필요합니다. – Amber

+0

좋은 설명 +1 – redsquare

5

@ Dav의 답변에 추가하면 변수에 jquery 객체를 저장하는 것이 좋은 방법입니다. 클래식 예 :

$('#something div').each(function() { 
    $(this).css({'background-color':'#afa'}); 
    // do some stuff; 
    $(this).slideDown('fast'); 
} 

더 나은 방법 : 당신은 당신이 $를 호출 할 때마다 JQuery와 객체를 만들지 않도록

$('#something div').each(function() { 
    var $this = $(this); 
    $this.css({'background-color':'#afa'}); 
    // do some stuff; 
    $this.slideDown('fast'); 
} 

이 방법.