P粉9211300672023-08-21 14:13:52
bind()
기능을 사용할 수 있습니다. bind()
기능Underscore.js를 사용하는 경우 - http://underscorejs.org/#bind
으아악P粉1761515892023-08-21 10:04:21
this
this
("컨텍스트"라고도 함)은 정의 방법이 아니라 함수 호출 방법에만 값이 달라지는 모든 함수 내부의 특수 키워드입니다. 다른 변수와 달리 어휘 범위의 영향을 받지 않습니다(화살표 함수 제외, 아래 참조). 다음은 몇 가지 예입니다:
this
에 대해 자세히 알아보려면 MDN 설명서를 참조하세요.
this
ECMAScript 6에는 람다 함수로 생각할 수 있는 arrow 함수가 도입되었습니다. 자체 this
绑定。相反,this
在作用域中查找,就像普通变量一样。这意味着你不需要调用.bind
바인딩이 없습니다. 대신
.bind
를 호출할 필요가 없습니다. 또한 다른 특별한 동작도 있습니다. 자세한 내용은 MDN 설명서를 참조하세요. this
사용되지 않음
this
,而是需要访问它所指的对象。因此,一个简单的解决方案是创建一个新变量,也指向该对象。变量可以有任何名称,但常见的是self
和that
실제로는 구체적으로 액세스
self
및 that
입니다.
으아악
self
是一个普通变量,它遵循词法作用域规则,并且可以在回调函数内部访问。这还有一个优点,即可以访问回调函数本身的this
self
는 일반 변수이므로 어휘 범위 지정 규칙을 따르며 콜백 함수 내에서 액세스할 수 있습니다. 이는 콜백 함수 자체의
this
콜백 함수를 명시적으로 설정
this
값이 자동으로 설정되므로
모든 함수에는 .bind
[文档],它返回一个将this
绑定到一个值的新函数。该函数的行为与你调用.bind
时的函数完全相同,只是this
由你设置。无论如何或何时调用该函数,this
를 값에 바인딩하는 새 함수를 반환하는
.bind
this
绑定到MyConstructor
的this
[docs]
메서드가 있습니다. 이 함수의 동작은 사용자가 설정한다는 점을 제외하면 .bind
를 호출할 때와 정확히 동일합니다. 함수가 호출되거나 호출될 때 는 항상 전달된 값을 참조합니다.
으아악
jQuery.proxy
이 경우 콜백 함수의 를 MyConstructor
의 값에 바인딩합니다.
참고:
this
- 2부콜백 함수를 허용하는 일부 함수/메서드는 콜백 함수의 this
。这与手动绑定相同,但是函数/方法会为你执行绑定。例如,Array#map
로 사용해야 하는 값도 허용합니다. 이는 수동 바인딩과 동일하지만 함수/메서드가 바인딩을 수행합니다. 예를 들어 Array#map 코드 > [문서]
이 방법입니다. 서명은 다음과 같습니다:
첫 번째 매개변수는 콜백 함수이고, 두 번째 매개변수는 this
참조해야 하는 값입니다. 다음은 인위적인 예입니다:
참고: 에 this
的值通常在函数/方法的文档中提到。例如,jQuery的$.ajax
方法 [文档]描述了一个名为context
값을 전달할 수 있는지 여부는 일반적으로 함수/메서드 문서에 언급되어 있습니다. 예를 들어 jQuery의 $.ajax
메서드
설명 컨텍스트
라는 옵션:
FAQ: 객체 메서드를 콜백/이벤트 핸들러로 사용
this.method
被分配为点击事件处理程序,但是如果点击document.body
,记录的值将是undefined
,因为在事件处理程序内部,this
指的是document.body
,而不是Foo
이 문제의 또 다른 일반적인 징후는 객체 메서드를 콜백/이벤트 핸들러로 사용하는 것입니다. JavaScript에서 함수는 일급 시민이며 "메서드"라는 용어는 단순히 객체의 속성 값인 함수를 나타냅니다. 그러나 함수와 해당 "포함" 개체 사이에는 특정 링크가 없습니다.
this
다음 예를 고려해보세요:
으아악
this.method
함수가 클릭 이벤트 핸들러로 할당되어 있지만, document.body
를 클릭하면 기록된 값이 정의되지 않음
이 됩니다. 이벤트 핸들러 내부에서 는 Foo
의 인스턴스가 아닌 document.body
를 참조합니다.
앞서 언급했듯이
는
이 아니라 함수 가 호출되는 방식 을 나타냅니다. .bind
将this
코드가 다음과 같다면 더 분명할 것입니다:
🎜해결책 🎜은 위에서 언급한 것과 동일합니다. 가능한 경우 .bind
를 사용하여 🎜를 특정 값 🎜에 명시적으로 바인딩합니다.
으아악
🎜또는 익명 함수를 콜백/이벤트로 사용