js 에서 apply 방법의 사용 에 대한 상세 한 분석

3325 단어 jsapply
본 고 는 js 에서 apply 방법의 사용 에 대해 상세 하 게 정리 하고 소개 하 며 인터넷 에서 정리 한 것 이다.
1. 대상 의 계승, 일반적인 방법 은 복사: Object. extendeprototype. js 의 실현 방식 은:
 코드 는 다음 과 같 습 니 다:
Object.extend = function(destination, source) { 
    for (property in source) { 
        destination[property] = source[property]; 
    } 
    return destination; 
}

그 밖 에 또 다른 방법 이 있 습 니 다. 바로 Function. apply (물론 Function. call 을 사용 해도 됩 니 다) 입 니 다.
apply 방법 은 다른 대상 을 납치 할 수 있 는 방법 으로 다른 대상 의 속성 을 계승 합 니 다.
Function. apply (obj, args) 방법 은 두 개의 인 자 를 받 을 수 있 습 니 다.
obj: 이 대상 은 Function 클래스 의 this 대상 을 대체 합 니 다.
args: 이것 은 배열 입 니 다. Function (args -- > arguments) 에 매개 변수 로 전 달 됩 니 다.
apply 시범 코드 는 다음 과 같 습 니 다.
 코드 는 다음 과 같 습 니 다:
<script> 
function Person(name,age){   //     ,    
    this.name=name;     //    
    this.age=age;       //   
    this.sayhello=function(){alert("hello")};
} 
function Print(){            //       
    this.funcName="Print"; 
    this.show=function(){      
        var msg=[];
        for(var key in this){ 
            if(typeof(this[key])!="function"){
                msg.push([key,":",this[key]].join(""));
            }
        } 
        alert(msg.join(" "));
    };
} 
function Student(name,age,grade,school){    //    
    Person.apply(this,arguments);
    Print.apply(this,arguments);
    this.grade=grade;                //   
    this.school=school;                 //   
} 
var p1=new Person("jake",10);
p1.sayhello();
var s1=new Student("tom",13,6,"    ");
s1.show();
s1.sayhello();
alert(s1.funcName);
</script>

학생 류 는 본래 어떤 방법 도 갖 추 지 못 했 지만 Person. apply (this, arguments) 이후
그 는 Person 류 의 sayhello 방법 과 모든 속성 을 갖 추고 있다.
Print. apply (this, arguments) 이후 자동 으로 show () 방법 을 얻 었 습 니 다.
2 、 Apply 의 매개 변수 배열 화 를 이용 하여 향상
Function. application () 프로그램의 성능 향상 에 대한 기술
우 리 는 먼저 Math. max () 함수 부터 말 하면 Math. max 뒤에 임의의 인 자 를 연결 할 수 있 고 마지막 으로 모든 매개 변수의 최대 치 를 되 돌려 줍 니 다.
예 를 들 면
alert(Math.max(5,8))   //8
alert(Math.max(5,7,9,3,1,6))   //9

그러나 많은 경우 배열 에서 가장 큰 요 소 를 찾 아야 한다.
 코드 는 다음 과 같 습 니 다:
var arr=[5,7,9,1]alert(Math.max(arr))    //        。      
function getMax(arr){    
    var arrLen=arr.length;    
    for(var i=0,ret=arr[0];i<arrLen;i++){        
        ret=Math.max(ret,arr[i]);           
    }   
    return ret;
}

이렇게 쓰 는 것 은 번 거 롭 고 비효 율 적 이다.apply 를 사용 하면 코드 를 보 세 요.
 코드 는 다음 과 같 습 니 다:
function getMax2(arr){
    return Math.max.apply(null,arr);
}

두 단락 의 코드 는 같은 목적 을 달 성 했 지만 getMax 2 는 우아 하고 효율 적 이 며 간결 하 다.예 를 들 어 배열 의 push 방법.
var arr1=[1,3,4];
var arr2=[3,4,5];

만약 우리 가 arr 2 를 펼 친 후에 하나씩 arr 1 에 추가 하려 고 한다 면, 마지막 으로 arr 1 = [1, 3, 4, 3, 4, 5] arr1. push (arr 2) 는 분명히 안 된다.왜냐하면 이렇게 하면 [1, 3, 4, [3, 4, 5] 를 얻 을 수 있 기 때문이다.
우 리 는 하나의 순환 으로 하나의 push (물론 arr1. concat (arr2) 를 사용 할 수 있 지만, concat 방법 은 arr 1 자 체 를 바 꾸 지 않 습 니 다)
코드 는 다음 과 같 습 니 다:
var arrLen=arr2.length
for(var i=0;i<arrLen;i++){
    arr1.push(arr2[i]);
}

애플 리 케 이 션 이 생기 면서 일이 이렇게 쉬 워 졌 다.
Array.prototype.push.apply(arr1,arr2)

좋은 웹페이지 즐겨찾기