복붙노트

[JQUERY] 어떻게 함수에 이러한 상황을 전달합니까?

JQUERY

어떻게 함수에 이러한 상황을 전달합니까?

해결법


  1. 1.자바 스크립트 .call ()와 .apply () 메소드는 함수의 컨텍스트를 설정할 수 있습니다.

    자바 스크립트 .call ()와 .apply () 메소드는 함수의 컨텍스트를 설정할 수 있습니다.

    var myfunc = function(){
        alert(this.name);
    };
    
    var obj_a = {
        name:  "FOO"
    };
    
    var obj_b = {
        name:  "BAR!!"
    };
    

    지금 당신은 호출 할 수 있습니다 :

    myfunc.call(obj_a);
    

    어느 FOO 경고한다. 다른 방법은 주위 obj_b을 통과하는 것은 BAR 경고 것입니다!. .call ()와 .apply () 사이의 차이점은 .call이 ()는 배열을 필요로 () 함수에 인수를 전달하고 .apply하는 경우 쉼표로 구분 된 목록 걸립니다.

    myfunc.call(obj_a, 1, 2, 3);
    myfunc.apply(obj_a, [1, 2, 3]);
    

    따라서, 용이하게 적용 () 메소드를 사용하여 후크 함수를 작성할 수있다. 예를 들어, 우리는 jQuerys .CSS () 메소드에 기능을 추가 할. 우리는 원래의 함수 참조를 저장하는 사용자 정의 코드를 사용하여 기능을 덮어 쓰기 저장 함수를 호출 할 수 있습니다.

    var _css = $.fn.css;
    $.fn.css = function(){
       alert('hooked!');
       _css.apply(this, arguments);
    };
    

    마법 인수 개체가 개체와 같은 배열이기 때문에, 우리는 그냥 적용 전달할 수 있습니다 (). 모든 매개 변수가 원래의 기능을 통해 전달되는 것을 그런 식으로 우리의 보증.


  2. 2.사용 function.call :

    사용 function.call :

    var f = function () { console.log(this); }
    f.call(that, arg1, arg2, etc);
    

    어디 그게 당신이 할 기능이 원하는 개체입니다.


  3. 3.jQuery를 사용하면 매개 변수로 전달하는 기능이 내부에 전류 노드를 할당하는 .call (...) 방법을 사용한다.

    jQuery를 사용하면 매개 변수로 전달하는 기능이 내부에 전류 노드를 할당하는 .call (...) 방법을 사용한다.

    편집하다:

    당신은 의심의 여지가있을 때 jQuery의 코드 내부를 들여다 보면 두려워하지 말라, 그것은 명확하고 잘 문서화 자바 스크립트의 전부입니다.

    예 :이 질문에 대한 대답은 라인 (574), callback.call (객체 [이름], 이름, 객체 [이름]) 주위 === 거짓


  4. 4.또 다른 기본 예제 :

    또 다른 기본 예제 :

    작동하지 않는:

    var img = new Image;
    img.onload = function() {
       this.myGlobalFunction(img);
    };
    img.src = reader.result;
    

    일:

    var img = new Image;
    img.onload = function() {
       this.myGlobalFunction(img);
    }.bind(this);
    img.src = reader.result;
    

    그래서 기본적으로 : 당신의 기능에 (이) .bind 추가


  5. 5.당신은 함수 내에서이의 컨텍스트를 설정하는 바인딩 기능을 사용할 수 있습니다.

    당신은 함수 내에서이의 컨텍스트를 설정하는 바인딩 기능을 사용할 수 있습니다.

    function myFunc() {
      console.log(this.str)
    }
    const myContext = {str: "my context"}
    const boundFunc = myFunc.bind(myContext);
    boundFunc(); // "my context"
    
  6. from https://stackoverflow.com/questions/3630054/how-do-i-pass-the-this-context-to-a-function by cc-by-sa and MIT license