apply 및call
apply
Function.apply(obj,args)
obj: Function this
args: , Function(args-->arguments)
call
Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj: Function this
params:
/* */
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 .
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을 주었다. 이것은 이 방법을 호출할 대상이 없기 때문이다. 나는 이 방법으로 나를 도와 연산을 하고 되돌아오는 결과를 얻으면 된다.그래서 그냥 넘버를 하나 보냈어요.
b) Math.min은 그룹 중 가장 작은 항목을 얻을 수 있습니다
마찬가지로 max와 같은 생각입니다.min.apply(null,array);
c) Array.prototype.push는 두 개의 그룹을 합칠 수 있다
같은push 방법은push를 하나의 수조로 제공하지 않았지만,push(param1,param,...paramN)를 제공하기 때문에apply를 통해 이 수조를 바꿀 수 있습니다. 즉:
vararr1=new Array("1","2","3");
vararr2=new Array("4","5","6");
Array.prototype.push.apply(arr1,arr2);
이렇게 이해할 수 있다.arr1은push 방법을 호출했다. 매개 변수는 apply를 통해 수조를 매개 변수 목록으로 바꾸는 집합이다.
보통 어떤 상황에서 apply를 사용하여 Math와 유사하게 사용할 수 있습니다.min 등의 특수 용도:
n , ([param1[,param2[,…[,paramN]]]]), apply !
5. 요약:
처음에 나는 apply에 대해 매우 몰랐다. 마지막에 몇 번을 더 봤고 코드를 몇 번 더 두드려서야 중간의 이치를 깨달았다. 그래서 무슨 일을 하든지 머리를 써서 코드를 두드리면 이런 기술을 습득할 수 있다.
그리고 예를 들어 네 번째 부분의 내용을 보면 실제로 존재하는 문제를 교묘하게 해결했다. 이것은 초보자가 생각할 수 있는 해결 방안이 아닐 것이다. (이것도 내가 생각한 것이 아니다.) 프로그래밍에 대해 일정한 인식을 가지지 않으면 이런 생각을 하지 못할 것이다. 아니면 한마디로 많이 쌓고 많이 공부하며 자신의 능력과 프로그래밍 사상에 대한 이해 능력을 향상시키는 것이 가장 관건이다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.