Javascript에서 call() 메소드와 apply() 메소드의 용도는 무엇입니까? (코드 첨부)

不言
풀어 주다: 2018-08-01 16:35:00
원래의
1384명이 탐색했습니다.

JavaScript의 apply() 메서드와 call() 메서드는 Function 개체의 메서드입니다. 각 Function 개체에는 apply() 메서드와 call() 메서드가 있습니다. () 메소드 JavaScript에서의 사용법과 기능은 무엇입니까? 이번 글에서는 apply() 메소드와 call() 메소드의 사용법에 대해 설명하겠습니다.

apply() 메소드와 call() 메소드의 구문:

/*apply()方法*/
function.apply(thisObj[, argArray])
/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);
로그인 후 복사

Function : 다른 것을 빌리세요 복사하지 않고 하나의 객체 메소드. (함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경하여 다른 객체 대신 메소드를 호출하는 데 사용할 수 있습니다.)

apply() 메소드 및 호출 ( ) 메서드 기본 사용법:

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1);  //6     
alert(a2);  //2

/*call的用法*/
var a1 = add.call(sub,4,2);
로그인 후 복사

apply() 메서드 및 call() 메서드 구현 상속:

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

function Cat(name){
  Animal.apply(this,[name]);    
}

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

/*call的用法*/
Animal.call(this,name);
로그인 후 복사

#🎜 🎜#apply() 메소드와 call() 메소드는 다중 상속을 구현합니다:

    function Class10(){
      this.showSub = function(a,b){
            alert(a - b);
        }   
    }
    
    function Class11(){
      this.showAdd = function(a,b){
            alert(a + b);
        }  
    }
    
    function Class12(){
      Class10.apply(this);
      Class11.apply(this);   
      // Class10.call(this);
      //Class11.call(this);  
    }
    
    var c2 = new Class12();
    c2.showSub(3,1);    //2
    c2.showAdd(3,1);    //4
로그인 후 복사

Call() 메소드의 기능: 의사 배열을 실제 배열로 변경# 🎜🎜# Pseudo 배열은 길이 속성을 포함하는 json 객체입니다. 실제로는 컬렉션(컬렉션 데이터 설명)을 시뮬레이션합니다.

For 예:

var json = {1:’苹果’,2:’香蕉’,3:’菠萝’,length:3}
Var arr = [‘苹果’,’香蕉’,’菠萝’]
로그인 후 복사

그의 특성:

1 키는 모두 1, 2, 3, 4, 5

2입니다. 길이 속성



의사 배열을 실제 배열로 변환하는 방법

/*我们通过如下方式将其转换成数组*/
/*slice:截取数组,返回的还是数组,这里截取全部*/
var domNodes=Array.prototype.slice.call(divs);
/*这样domNodes就可以应用Array下所有方法*/
로그인 후 복사

Apply() 메서드 사용 팁:

#🎜 🎜## 🎜🎜#1. Math.max는 배열에서 가장 큰 항목을 얻을 수 있습니다.

Math.max는 Math.max([param1, param2])는 배열이지만 Math.max(param1,param2...)를 지원하므로 Apply의 특성에 따라 var max=Math.max.apply(null,array)를 풀 수 있으므로 배열에서 최대 항목을 쉽게 얻을 수 있습니다(apply는 배열을 매개변수별 메서드로 변환하고 이를 메서드에 전달합니다). 이 메서드를 호출할 때 첫 번째 매개 변수는 null로 지정됩니다. 이는 이 메서드를 호출할 개체가 없기 때문입니다. 반환된 결과를 계산하고 가져오는 데 이 메서드만 사용하면 됩니다. 과거에 null을 직접 전달했습니다.

이 방법을 사용하여 배열에서 가장 작은 항목을 가져올 수도 있습니다. Math.min.apply(null,array)

2, Array.prototype . push는 두 개의 배열을 병합할 수 있습니다

동일한 push 메소드는 push 배열을 제공하지 않지만 push(param1, param2...paramN)를 제공하므로 Apply를 사용하여 변환할 수도 있습니다. 이 배열, 즉:

   var arr1=new Array("1","2","3");
    var arr2=new Array("4","5","6");
    Array.prototype.push.apply(arr1,arr2);    
    //得到合并后数组的长度,因为push就是返回一个数组的长度
로그인 후 복사

arr1이 push 메소드를 호출하고 매개변수는 Apply #🎜🎜를 통해 배열을 매개변수 목록 모음으로 변환하는 것임을 이해할 수도 있습니다. ##🎜🎜 #일반적으로 Math.max 등 Apply 등 특수 사용법을 사용할 수 있는 경우: 일반적으로 대상 함수에는 n개의 매개변수 목록만 필요하고 배열을 받지 못하는 경우가 있습니다. 적용을 통해 영리하게 해결했습니다.


추천 관련 글 :

JavaScript_기본지식 중 호출 방식과 적용 방식의 사용 비교

# 🎜🎜#javascript_javascript 스킬의 호출 및 적용 메소드에 대한 간략한 설명

위 내용은 Javascript에서 call() 메소드와 apply() 메소드의 용도는 무엇입니까? (코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿