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 방식으로 이 문제를 교묘하게 해결할 수 있습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.