programing

$이것 대 jQuery의 $(이것)

subpage 2023. 10. 1. 19:28
반응형

$이것 대 jQuery의 $(이것)

는 에 SO 해서와 좀 봤습니다.$(this).$thisjQuery에서, 그들은 나에게 이해가 됩니다. (예를 들어 여기 토론 참조)

하지만 체인성이 어떻게 작동하는지 보여주는 jQuery 웹사이트 플러그인 튜토리얼의 아래 토막글은 어떨까요?

(function ($) {

    $.fn.lockDimensions = function (type) {

        return this.each(function () {

            var $this = $(this);

            if (!type || type == 'width') {
                $this.width($this.width());
            }

            if (!type || type == 'height') {
                $this.height($this.height());
            }

        });

    };
})(jQuery);

인가란 입니까?$this위를 대표합니까?내가 그걸 알아냈다고 생각할 때쯤...

$this단지 평범한 변수일 뿐입니다.$$this다른 reserved 변수 이름과 동일하게 동작합니다.를 부르는 JellyBean.

에를 쓰잖아요.var $this = $(this);필요 이상으로 자주 새 jQuery 개체를 만들지 않도록 합니다.아래 코드의 경우에는 2/4이 아닌 하나의 개체만 생성합니다.이것은 체인성과는 전혀 관련이 없습니다.

당신은 그것을 부를 수도 있습니다.that,$thi$ 그 것은 하지 말 것것 :것오,다 :p)로 사용함$자바스크립트에서 a-zare와 정확히 같은 단순한 문자일 뿐입니다.

this 현재 .vscript다.이 은 jQuery스럽습니다라는은을 스럽습니다.this그들의 고리 구조 안에서 더 사용자 친화적입니다.

바깥쪽에.each(),thisjQuery다에은 ..lockDimensions에 의해 호출됩니다.

내부에.each()현재 반복된 DOM 개체를 나타냅니다.

으로 의 $(this)에서 jQuery합니다를 .$() 여러 번, 캐싱jQueryized this여러 번 사용해야 한다면 효율성에 도움이 될 것입니다.

$는 단순히 유효한 변수 이름 문자이며 일반적으로 프로그래머가 이미 jQuery 개체임을 대기열에 넣을 때 변수 이름의 첫 번째 문자로 사용됩니다(관련 메서드/속성 사용 가능).

이 체인 하려면 를 .this고,해,this그 전화에서도 말입니다.

이 대목을 간과하셨을 수도 있습니다.

var $this = $(this);

여기서,$this입니다 입니다.$(this). 와 하실 수 .$(this)동일한 검색을 반복해서 수행하지 않는다는 이점이 있습니다.

$this입니다를 이 붙여졌습니다.$(this)의 .jQuery 합니다를 합니다.this번할 수 .

$this다의 로컬 입니다.thisQuery로 감쌌습니다.

것.this그것이 필요할 때마다 훨씬 더 효율적입니다.

$this = $(this)는 jQuery 개체를 캐시하는 방법입니다.매번 jQuery 기능을 실행하는 것은 비용이 많이 들기 때문에 출력을 저장하면 jQuery 기능을 다시 호출하지 않고도 셀렉터를 반복해서 사용할 수 있습니다.

 $this = $(this)

, 를 , 합니다라는 합니다.$this .

그것은 단지 가변적인 이름입니다.

그것은 그냥 채워집니다.$this 변수$(this) 를 할 필요가 .$(this)모든 호출에 요소를 포함합니다.다가 더 .

var $this = $(this);

간단해요. .$this = $(this)은 단지 그것은 단지 내적인 기능의 범위에서 사용되는 축약어일 뿐입니다.달러 사인은 이 경우 문자일 뿐, jQuery를 전혀 지칭하지 않습니다.입니다로 이 나을 수도 ._this아니면xthis,$변수에 포함된 내용을 상기시켜 줄 뿐입니다.

처럼 보일세( 합니다)을 합니다.$()기능이 무료가 아닙니다). 따라서 성능상의 이유로 사용될 가능성이 높습니다.

에서 안에서.$.fn.lockDimensions,thisjQuery입니다를 입니다.lockDimensions요청했습니다.

.each,this이제 루프의 현재 반복에서 DOME 요소를 참조합니다.$(this)DOME를 jQuery하고,var $this = $(this);저장하는 것 뿐입니다.$(this)$this번가 없습니다(할 경우 jQuery Constructor 를()).$(this)대신에).

$sign과 jQuery됩니다를 됩니다.그래서 여기.$this입니다의 를 얻을 수 뿐입니다.$(this)은 jQuery를 반환합니다.this.$유효한 변수 이름의 일부일 뿐입니다.

$this는 이름을 가진 변수입니다.$this$(this) 무의미한 좀 무의미한 IMO.

전문적인 jQuery 기술이 없어도 여기에 뛰어들고 싶습니다.

수많은 코드 라인이나 다음과 유사한 개념을 볼 수 있습니다.

var $this = $(this);

그래서 저는 다음과 유사하게 다시 작성합니다.

var $jims_this = $(this);

시험해 보세요.또한 저는 제가 가질지도 모르는 혼란을 해소하기 위해 이렇게 합니다.

다음은 유사하게 잘 설명되지 않은 코드의 또 다른 예입니다.

 <style>
    a.a { font-weight: bold; }
 </style>

그런 다음 addClass 호출을 스크립트에 추가합니다.

  $("a").addClass("a");

이것은 효과가 있지만 혼란스럽습니다.다음과 같이 쓰였을 수도 있습니다.

<style>
a.my_bold_class { font-weight: bold; }
</style>

 $("a").addClass("my_bold_class");

짐.

당신은 자바스크립트 범위와 폐쇄의 영역을 방황했습니다.

단답형의 경우:

this.bar()

foo의 범위에 따라 실행됩니다. (이것은 foo를 지칭합니다.)

var barf = this.bar;
barf();

글로벌 범위에서 실행됩니다.

this.bar 은 기본적으로 다음을 의미합니다.

이 (foo)의 범위에 따라 this.bar 에서 지적한 기능을 실행합니다.this.bar 을 barf에 복사하고 barf를 실행할 때.javascript는 barf가 가리키는 함수를 실행하는 것으로 이해되며, 이것이 없기 때문에 그냥 글로벌 스코프로 실행됩니다.

이를 수정하기 위해 변경할 수 있습니다.

barf();

다음과 같은 경우에:

barf.apply(this);

이것은 자바스크립트에 이것의 범위를 실행하기 전에 barf에 바인딩하라고 알려줍니다.

jquery 이벤트의 경우 익명 함수를 사용하거나 범위 지정을 지원하기 위해 프로토타입의 바인딩 함수를 확장해야 합니다.

언급URL : https://stackoverflow.com/questions/7389944/this-vs-this-in-jquery

반응형