자바스크립트 바인딩에 관한 모든 것

1644 단어
bind() 메서드는 호출될 때 연산자에 전달된 값을 할당하는 새 함수를 만들고 함수가 호출될 때 주어진 인수보다 먼저 주어진 인수 시퀀스를 사용합니다.

이 값은 함수가 new 연산자로 호출될 때 무시됩니다.

통사론




fun.bind(thisArg[, arg1[, arg2[, ...]]])


매개변수


thisArg바인딩 함수가 호출될 때 대상 함수로 보낼 값입니다. 바인딩 함수가 new 연산자를 사용하여 생성된 경우 이 값은 무시됩니다.
인수1, 인수2, ...

대상 함수가 호출될 때 바인딩 함수에 제공된 인수 외에 추가로 전송될 인수입니다.

javascript bind 함수는 첫 번째 인수 de bind()와 연결된 this 참조를 사용하여 호출될 함수(바인딩된 함수의 대상 함수)와 동일한 본문(ECMAScript 5 용어의 내부 호출 속성)을 가진 새 함수(바인드된 함수)를 생성합니다. , 덮어쓸 수 없습니다. bind()는 목적 함수가 호출될 때 특정 매개변수의 나머지 부분보다 먼저 오는 기본 매개변수도 허용합니다. 바인딩된 함수는 new 연산자를 사용하여 생성할 수도 있습니다. 이렇게 하면 대신 목적 함수가 생성된 것처럼 작동합니다.

후자의 경우 이에 대한 해당 매개변수는 무시되지만 나머지 앞에 올 기본 매개변수는 에뮬레이트된 기능에 제공됩니다.

bind()의 가장 간단한 사용법은 어떻게 호출되든 항상 this 참조를 가진 동일한 객체를 가리키는 함수를 만드는 것입니다. 새로운 JavaScript 프로그래머의 일반적인 실수는 객체의 메서드에 대한 참조를 얻은 다음 외부 참조에서 해당 메서드를 실행하고 이 참조가 메서드를 얻은 원래 객체를 여전히 가리킬 것으로 예상한다는 것입니다(예: 콜백에서 해당 메소드를 사용할 때). 주의를 기울이지 않으면 원래 항목이 일반적으로 손실됩니다. 원래 객체를 사용하여 함수에서 바인딩된 함수를 만들면 이 문제가 깔끔하게 해결됩니다.

this.x = 9;
var module = {
  x: 81,
  getX: function() { return this.x; }
};

module.getX(); // 81

var getX = module.getX;
getX(); // 9, porque en este caso, "this" apunta al objeto global

// Crear una nueva función con 'this' asociado al objeto original 'module'
var boundGetX = getX.bind(module);
boundGetX(); // 81

좋은 웹페이지 즐겨찾기