2
약간의 코드로 시작하겠습니다. 의 객체를 보자 : 컨텍스트를 전달하는 데 통화/적용이 바람직합니까?
function SomeObject() {
this.arbitraryVarINeed = 5;
}
지금 한 가지 방법은 다음과 같습니다
SomeObject.prototype.stuffToBeDone() {
var context = this;
function heyThere() {
console.log(context.arbitraryVarINeed);
}
heyThere();
}
과 다른 :
SomeObject.prototype.stuffToBeDone() {
function heyThere() {
console.log(this.arbitraryVarINeed);
}
heyThere.call(this);
}
지금이 간단한 예에서, 호출은 분명히 바람직 할 것이다. 그러나 이것에 대해서, .call/.apply도 적용 가능합니까?
SomeObject.prototype.stuffToBeDone() {
var hello = document.createElement("brofist");
var context = this;
hello.onBroEvent = function (event) {
event.target.innerBro = context.arbitraryVarINeed;
}
}
그리고 반복 .call 사용 사이에서 선택해야하는 경우/.apply하거나 상황에 맞는 내가 전자 또는 후자 가야, 어딘가에 저장 저장? 빠른 옵션 인 안전한 옵션은 다른 두 방법보다 훨씬 단순한 두 가지 방법 중 하나입니다.
Jakob의 대답 덕분에 이벤트/anon 함수 예제도 .bind를 통해 해결할 수 있습니다. 결국 컨텍스트를 전달할 필요가 전혀 없습니까?
바인딩은 기본적으로 그냥 비록 폐쇄 컨텍스트를 저장한다. IIRC, bind는 다음과 같이 polyfilled 될 수 있습니다 (명확성을 위해 프로토 타입을 사용하지 않음) : function bind (fn, target) {return function() {return fn.call (target, arguments); }}'. – Alxandr
당신은 내가 찾고있는 것을 더 많이 또는 더 적게 가지고 있습니다. 심지어 그 질문은 답이없는 채로 남아 있습니다. 나는 그것이 곧 바뀔지는 모르겠다. 그래서 여기에 간다. – Fenixp