사람들이 왜 내 이벤트 처리기에 대해 랩 기능을 사용하는지 이해하려고합니다. 예 :(javascript) 이벤트 처리기와 관련하여 사용되는 줄 바꿈 기능은 무엇입니까?
Example.prototype.wrap = function(obj, method) {
return function(event) {
obj[method](event);
}
}
기본적으로 랩은 무엇에 사용됩니까?
편집 : 아래 링크의 예에서, 코드는 다음과 같습니다
String.prototype.capitalize = String.prototype.capitalize.wrap(
function(proceed, eachWord) {
if (eachWord && this.include(" ")) {
// capitalize each word in the string
return this.split(" ").invoke("capitalize").join(" ");
} else {
// proceed using the original function
return proceed();
}
});
"hello world".capitalize() // "Hello world"
"hello world".capitalize(true) // "Hello World"
나는 랩 기능은 내부 기능을 가지고 있음을 볼 수 있지만 나는 구문에 혼란 스러워요. wrap 함수는 function (proceed, eachWord) {blah}을 래핑합니다. 그러나이 경우 진행되는 것은 무엇이고 eachWord는 무엇입니까? 나는 eachWord가 대문자로 변환 된 매개 변수라고 생각한다. ("hello world".capitalize (true)) 그러나 나는 진행이 무엇인지 알지 못한다.
또한이 코드는 'true'값을 전달할 위치와 코드에서 할당 된 변수를 어떻게 알 수 있습니까? (즉, 그 어떤 PARAM입니까?)
http://www.prototypejs.org/api/function/wrap 원래 기능은 (비록 직접하지 않음)입니다 진행합니다. eachWord는 예제에서 전달 된 부울 인수입니다. eachWord가 true이면 정의 된 새 함수가 실행되고 그렇지 않으면 원래 함수 인 proceed()가 호출됩니다. 여기에 혼란이있을 수 있습니다 왜냐하면 그들이 진짜로 그것의 호출 ... 그것은 여전히 원래의 자본 기능에 연결됩니다 중요하지 않습니다 때 진행() 전화했기 때문일 수 있습니다. – SimonDever
아, 래퍼에서 '진행'메서드로 'capitalize'함수를 전달 했습니까? – sepiroth
실제로 :)하지만 실제 프로토 타입 기능이 아닙니다. 간접적 인 층이 있습니다. – SimonDever