apply의 몇 가지 용법

5350 단어
apply: 방법은 다른 대상을 납치할 수 있는 방법으로 다른 대상의 속성을 계승합니다.
Function.apply(obj,args) 방법은 두 개의 매개 변수를 수신할 수 있습니다. obj: 이 대상은 Function 클래스에서this 대상args를 대체합니다. 이것은 그룹입니다. 이것은 매개 변수로 Function(args – >arguments)에 전달됩니다.
call: apply의 뜻과 같이 매개 변수 목록이 다를 뿐입니다.
Function.call(obj, [param1[, param2[,...[, paramN]]]])obj: 이 대상은 Function 클래스에서this 대상 params를 대체합니다. 이것은 매개 변수 목록입니다.
1.apply :  

<script type="text/javascript">   
/* */   
function Person(name,age) {   
    this.name=name; this.age=age;   
}   
 /* */   
functionStudent(name,age,grade) {   
    Person.apply(this,arguments); this.grade=grade;   
}   
//    
var student=new Student("qian",21," ");   
//    
alert("name:"+student.name+"
"
+"age:"+student.age+"
"
+"grade:"+student.grade); // name:qian age:21 grade: // name age , , apply .
script>

분석: Person.apply(this,arguments);
this: 대상을 만들 때 이 시간에 학생을 대표합니다.
arguments: 하나의 수조, 즉 ["qian", "21", "1학년"];
즉, 통속적으로 말하자면 학생으로 Person 클래스의 내용을 집행하고 Person 클래스에this가 존재한다.name 등 문장, 이렇게 하면 속성을 학생 대상에 만들 수 있습니다
2.call 예제
Studen 함수에서 apply를 다음과 같이 수정할 수 있습니다.
Person.call(this,name,age);  

3. 어떤 상황에서는 apply, 어떤 상황에서는call
대상의 매개 변수를 주는 상황에서 매개 변수의 형식이 그룹일 때, 예를 들어 apply 예시에서 매개 변수arguments가 전달되었다. 이 매개 변수는 그룹 형식이고 Person을 호출할 때 매개 변수의 목록이 일치하는 (즉 Person과 Student의 매개 변수 목록 앞의 두 자리가 일치하는 것) apply를 사용할 수 있다. 만약에 나의 Person의 매개 변수 목록이 이렇다면(age,name), Student의 매개 변수 목록은 (name,age,grade)이다.이렇게 하면 콜로 실현할 수 있다. 즉, 매개 변수 목록에 대응하는 값의 위치를 직접 지정하는 것이다. (Person.call (this,age,name,grade).
4.apply의 다른 교묘한 사용법
세심한 사람들은 내가 apply 방법을 호출할 때 첫 번째 파라미터는 대상(this)이고 두 번째 파라미터는 하나의 수조 집합이라는 것을 이미 알아차렸을 것이다.
Person을 호출할 때, 그가 필요로 하는 것은 하나의 그룹이 아니지만, 왜 그가 나에게 하나의 그룹을 주었는지 나는 여전히 하나의 매개 변수로 해석할 수 있다.
이것이 바로 apply의 교묘한 용도입니다. 하나의 수조를 기본적으로 매개 변수 목록으로 변환할 수 있습니다 ([param1,param2,param3]를 param1,param2,param3). 이것은 우리가 프로그램으로 수조의 모든 항목을 매개 변수의 목록으로 바꾸는 것을 실현하려면 시간이 좀 걸릴 수 있습니다. apply의 이러한 특성을 빌려 다음과 같은 효율적인 방법을 사용할 수 있습니다.
a)Math.max는 그룹 중 가장 큰 항목을 얻을 수 있습니다
Math 때문에.max 매개 변수에서 지원되지 않음
Math.max([param1,param2])

바로 수조
하지만 그것은 Math를 지지한다.max(param1,param2,param3...), 그래서 아까 apply의 그 특징에 따라 varmax=Math를 해결할 수 있습니다.max.apply(null,array), 이렇게 하면 쉽게 하나의 그룹 중 가장 큰 항목을 얻을 수 있습니다
(apply는 하나의 수조를 하나의 매개 변수로 바꾸어 매개 변수를 전달하는 방법)
      null, , , ,. null   

b)Math.min은 그룹 중 가장 작은 항목을 얻을 수 있습니다
마찬가지로 맥스와 같은 사상이다
var min=Math.min.apply(null,array);  

c)Array.prototype.push

두 개의 수조 합병을 실현할 수 있다
같은push 방법은push를 하나의 수조로 제공하지 않았지만,push(param1,param,...paramN)를 제공하기 때문에apply를 통해 이 수조를 바꿀 수 있습니다. 즉:
var arr1=new Array("1","2","3");   
 var arr2=new Array("4","5","6");   
Array.prototype.push.apply(arr1,arr2);   

이렇게 이해할 수 있다.arr1은push 방법을 호출했다. 매개 변수는 apply를 통해 수조를 매개 변수 목록으로 바꾸는 집합이다.
보통 어떤 상황에서 apply를 사용하여 Math와 유사하게 사용할 수 있습니다.min 등의 특수 용도:
일반적으로 목표 함수에는 n개의 매개 변수 목록만 필요하고 하나의 수조의 형식([param1[,param2[,...[,paramN]]])을 받지 않으면 apply 방식으로 이 문제를 교묘하게 해결할 수 있습니다!

좋은 웹페이지 즐겨찾기