콜 및 apply 방법
apply () 방법은 두 개의 매개 변수를 수신합니다.
function sum(num1, num2){
return num1 + num2;
}
function callSum1(num1, num2){
return sum.apply(this, arguments); // arguments
}
function callSum2(num1, num2){
return sum.apply(this, [num1, num2]);
}
위의 예에서callSum1()은sum() 함수를 실행할 때this를 작용역으로 전송했다(전역 작용역에서 호출되었기 때문에 전송된 것이 window 대상이다)와arguments 대상이다.callSum2 역시sum() 함수를 호출하지만,this와 하나의 매개 변수 그룹을 전달합니다.
call() 방법은 apply() 방법과 작용이 같고 수신 매개 변수의 차이에 있다.call() 방법에 있어 첫 번째 파라미터는 작용역에 변화가 없고 변화된 것은 나머지 파라미터가 직접 전달된 것이다.다시 말하면 콜() 방법을 사용할 때 함수에 전달되는 매개 변수는 다음과 같이 그룹으로 열거해야 한다.
function sum(num1, num2){
return num1 + num2;
}
function callSum(num1, num2){
return sum.call(this, num1, num2);
}
alert(callSum(10, 10)); // 20
실제로 apply()와call()는 매개 변수만 전달하는 것이 아니라 그들이 진정으로 강한 것은 함수를 확장하여 운행하는 역할 영역이다.
window.color = "red";
var o = {
color : "blue"
};
function sayColor(){
alert(this.color);
}
sayColor(); // red
sayColor.call(this); // red
sayColor.call(window); // red
sayColor.call(o); // blue
sayColor는 전역 함수로 정의되어 있으며, 전역 역할 영역에서 호출할 때 'red' 를 표시합니다.this에 대한 것이기 때문입니다.color의 값을 구하면 window로 변환됩니다.color의 값.그리고sayColor.call(this)과sayColor.콜 (window) 은 전역 작용에서 함수를 현저하게 호출하는 두 가지 방식이며, 결과는 당연히 '레드' 를 표시합니다.하지만 SayColor를 실행합니다.콜 (o) 시 함수의 실행 환경이 달라집니다. 이 때 함수 체내의this 대상이 o를 가리키기 때문에 '블루' 를 표시합니다.
콜이나 apple () 를 사용하여 역할 영역을 확장하는 가장 큰 장점은 대상이 방법과 어떠한 결합 관계도 필요 없다는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.