js 에서 apply()와 call()의 차이 와 용법 사례 분석
모든 함 수 는 계승 이 아 닌 두 가지 방법 을 포함한다.
apply()
과call()
.두 가지 용 도 는 모두 특정한 역할 영역 에서 함 수 를 호출 하 는 것 으로 함수 체 내 this 대상 의 값 을 다시 설정 하 는 것 과 같다.두 가지 차 이 는 수신 매개 변수 방식 이 다 르 기 때 문 입 니 다.
apply()
첫 번 째 매개 변 수 는 apply 함수 가 실행 하 는 역할 영역 입 니 다.두 번 째 매개 변 수 는 Array 의 인 스 턴 스(배열)일 수도 있 고 arguments 대상 일 수도 있 습 니 다.call()첫 번 째 매개 변 수 는 this 의 값 이 변 하지 않 았 으 며 나머지 매개 변 수 는 함수 에 직접 전달 되 었 습 니 다(즉,하나씩 열거).배열 이나 arguments 대상 이 들 어 오 려 면 apply 가 더 편리 합 니 다.
apply()
와call()
파 라 메 터 를 전달 할 수 있 습 니 다.더욱 유용 한 것 은 둘 다 함수 운행 의 역할 영역 을 확장 할 수 있다 는 것 이다.
var obj = {color:'red'};
window.color = 'blue';
function getcolor(){
console.log(this.color)
};
getcolor.apply(obj); //red
getcolor.apply(window); //blue
getcolor.apply(this); //blue
온라인 HTML/CSS/JavaScript 코드 실행 도구 사용:http://tools.jb51.net/code/HtmlJsRun,테스트 실행 결 과 는 다음 과 같 습 니 다.중요 한 용법:
var values = [1,2,3,4,5,4,3,2,1];
var max = Math.max.apply(Math,values);
console.log(max); //5
온라인 HTML/CSS/JavaScript 코드 실행 도구 사용:http://tools.jb51.net/code/HtmlJsRun,테스트 실행 결 과 는 다음 과 같 습 니 다.이 는 실제로
apply()
수신 배열 을 이용 해 전 참 을 편리 하 게 했다.apply 의 첫 번 째 매개 변 수 는 null 또는 빈 문자열 로 바 꿀 수 있 습 니 다.그 밖 에
bind()
방법 은 함수 의 인 스 턴 스 를 만 들 것 입 니 다.this 값 은 전달bind()
의 값 을 가리 키 고 있 습 니 다.
window.color = 'red';
var o = {color:'blue'};
function sayColor(){
console.log(this.color)
};
var objSayColor = sayColor.bind(o);
objSayColor(); //blue
온라인 HTML/CSS/JavaScript 코드 실행 도구 사용:http://tools.jb51.net/code/HtmlJsRun,테스트 실행 결 과 는 다음 과 같 습 니 다.자 바스 크 립 트 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,javascript 대상 입문 강좌,JavaScript 상용 함수 기법 집합,JavaScript 오류 및 디 버 깅 기술 요약,JavaScript 데이터 구조 와 알고리즘 기술 총화과JavaScript 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.