JavaScript bind () 의 용법

3051 단어
독고 구 검
독고 구 검 을 배 웠 다 고 생각 했 는데 칼 을 잡 는 자세 가 틀 렸 다.
bid () 는 어떻게 사용 합 니까?코드 를 만 드 는 과정 에서 몇 번 도 사용 하지 않 았 습 니 다. $('button').bind('click', function() {...} ); 결 과 는 룸메이트 에 게 설명 하려 고 할 때 입 을 열 수가 없 었 습 니 다. 과연 괜 찮 은 지 안 되 는 지 한 줄 에 알 수 있 었 습 니 다.어서 자신 을 오 두 막 에 가두 고 검 을 갈 아 라.
MDN 공식 문서 의 bind () 에 대한 정의
The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
룸메이트 가 읽 고 첫 반응 을 하 는데 말 을 할 수 있 을까요?쉽게 말 하면 bid () 는 호출 함수 의 범위 (전역, 특정한 클래스 등) 를 제어 하 는 데 사 용 됩 니 다. bind(arg1) 이 함수 가 호출 되 었 을 때 arg1 는 bid () 함수 중의 this 를 호출 합 니 다. 이 함수 가 몇 번 호출 되 었 든 간 에 이 함수 중의 this 는 바로 이 arg 1 입 니 다.사람 말 같은 데 TM 뭐 라 는 거 야?
MDN Function. prototype. bind () 공식 문서 두 개의 밤 으로 bind () 의 용법 을 설명 할 수 밖 에 없습니다.
this.x = 9;
var module = {
  x: 81,
  getX: function() { return this.x; }
};

module.getX(); // 81

var retrieveX = module.getX;
retrieveX();  // 9

var boundGetX = retrieveX.bind(module);
boundGetX(); // 81
  • module.getX(); 의 결 과 는 81 이다. getX 의 this 는 module 이기 때문에 this. x 는 module 의 x = 81 이다.
  • retrieveX(); 의 결 과 는 9 이다. 이 때 는 var retrieveX = function() { return this.x; };, retrieveX(); 전체 에서 함수 안의 내용 을 다 뛰 어 다 니 는 것 과 같 기 때문이다. this. x 는 전체 this.x = 9 이다.

  • 관건 이 왔 습 니 다: var boundGetX = retrieveX.bind(module);, bid (module) 의 역할 은 retrieveX () 라 는 함 수 를 호출 할 때마다 이 함수 의 this 는 module 입 니 다. 전체적인 this 를 교체 하고 boundGetX () 호출 할 때 되 돌아 오 는 것 은 module.x 이기 때문에 81 입 니 다.
    두 번 째 밤 다시 보기:
    function LateBloomer() {
      this.petalCount =  1;
    }
    
    LateBloomer.prototype.bloom = function() {
      window.setTimeout(this.declare.bind(this), 1000);
    };
    
    LateBloomer.prototype.declare = function() {
      console.log('I am a beautiful flower with ' + this.petalCount + ' petals!');
    };
    
    var flower = new LateBloomer();
    flower.bloom();  
    //     :1s  ,    'I am a beautiful flower with 1 petals!'
    

    이 밤의 핵심 은 window.setTimeout(this.declare.bind(this), 1000); 입 니 다.이 밤 은 처음에는 좀 지적 으로 보 였 는데, 그 말 을 인쇄 하기 위해 서 직접 this 쓰 면 되 잖 아. 왜 bind () 를 해?보통 나 처럼 수천 명의 사람들 이 문제 없 는 문 서 를 본 것 이 지적 장애 다.
    이 밤 은 주로 bind () 의 반환 값 을 말 하기 위해 서 이다.window.setTimeout(this.declare(), 1000); 이것 은 이 함수 의 용법 입 니 다. function 은 지연 함수 이 고 milliseconds 는 지연 시간 입 니 다.window.setTimeout(function, milliseconds) 한 번 에 발견 하면 결 과 는 undefined 이 고 console.log(this.declare()); 결 과 는 declare 라 는 함수 입 니 다. bid () 를 사용 한 후에 새로운 함 수 를 만 들 것 입 니 다.
    이것 이 바로 왜 사용 해 야 하 는 지 console.log(this.declare.bind(this)); 입 니 다. 그래 야 1 초 지연 을 볼 수 있 습 니 다. 믿 지 않 으 면 bind () 를 지 워 보 세 요.
    종합 적 으로 그 비인간 적 인 말 을 다시 보 자.bid (arg 1, arg 2) 가 호출 될 때 새 함 수 를 만 듭 니 다. 이 새 함수 의 this 는 모두 arg 1, 즉 첫 번 째 매개 변수 입 니 다.

    좋은 웹페이지 즐겨찾기