필기:call()과 apply()의 역할

콜과 apply의 역할은 뚜렷하지만'동적으로 특정한 유형의 특정한 방법의 운행 환경을 바꾸는 것'이라고 정의해 왔기 때문에 깊이 이해하지 못했기 때문에 필기를 하고 귀납해 봅시다.
의미: apply: 한 대상의 한 방법을 호출하고 다른 대상으로 현재 대상을 교체한다. 예: B.apply(A,arguments).
call: 한 대상의 한 방법을 적용하고 다른 대상으로 현재 대상을 바꿉니다. 예를 들어 B.call(A,args1,args2).
공통점: 방법의 의미는 같다. 즉, 방법의 기능은 같다.
첫 번째 매개 변수의 작용은 같다.
차이점: 둘이 들어오는 목록의 형식이 다르다
call은 여러 개의 매개 변수를 전송할 수 있습니다.
apply는 두 개의 매개 변수만 전송할 수 있으며, 그룹 형식으로만 전송할 수 있습니다.
//call  
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

//apply  
function.apply(thisObj[, argArray]);
예:
//    
function add(a, b){
    alert(a + b);
}
function index(a, b){
   // call    print,        
   print.call(this, a, b);
   // apply    print,           ,
   //     JavaScript       arguments  
   print.apply(this, arguments);
   //       
   print.apply(this, [a, b]);
}

존재의 의미(call의 경우):
기본 용도:
//    

function add(a,b){
    alert(a+b);
}

function sub(a,b){
    alert(a-b);
}

add.call(sub,3,1);

//add  sub,add.call(sub,3,1) == add(3,1);

상속:
//  

function Animal(name){
    this.name = name;
    this.showName = function(){
        alert(this.naem);
    }
}

function Cat(name){
    Animal.call(this.name);
}

var cat = new Cat("Black Cat");
cat.showName();

//cat  Animal   

다중 상속:
//    

function class1(){
    this.showSub = function(a,b){
        alert(a-b);
    }
}

function class2(){
    this.showAdd = function(a,b){
        alert(a+b);
    }
}

function class12(){
    class1.call(this);
    class2.call(this);
}

좋은 웹페이지 즐겨찾기