call,apply와bind의 용법과 차이
2026 단어 전단javascript
먼저 세 가지 방법의 기본 문법을 살펴보자.
1. call 방법
역할: 호출 함수로 방법 내부의this지향을 수정하는 데 사용되며,this가 누구를 대표할 수 있는지 지정합니다 예를 들어 fn.call(obj)
fn, this obj
call :
.call( , 1, 2,...);
:
function test(a,b){
console.log(this);
console.log(a + b);
}
test(1,2); // window 3
var obj = {name:'zjy'};
window.test.call(obj,3,5); // {name:'zjy'} 8
해석:call 방법을 사용하지 않았을 때test 방법의this는 전역 대상인 window를 가리키고,call 방법을 사용한 후test의this는 window에서obj 대상으로 가리키며, 뒤의 매개 변수는 대응 방법의 참조 순서입니다.
2.apply 방법
역할:call 방법과 마찬가지로 수정 방법 내부의this가 가리키는 것이다. 이들의 차이점은 apply의 두 번째 파라미터는 반드시 하나의 그룹이어야 한다는 것이다(Iterator 인터페이스를 배치한 클래스 그룹의 대상도 가능하다).
// ?apply
// .apply( ,[ 1, 2,...]);
:
function test(a,b){
console.log(this);
console.log(a + b);
}
test(1,2); // window 3
var obj = {name:'zjy'};
window.test.apply(obj,[3,5]); // {name:'zjy'} 8
해석: apply 방법을 사용하지 않았을 때test 방법의this는 전역 대상인 window를 가리키고, apply 방법을 사용한 후test의this는 window에서obj 대상으로 가리키며, 뒤의 수조 파라미터는 수조 중의 요소를 순차적으로test 방법이 참조된 위치에 대응한다.
3. bind 방법
역할:this의 지향 문제를 바꿉니다. 귀속 함수의this이며, 귀속된 새로운 함수인 varfb=fn을 되돌려줍니다.bind(obj); window.fb();
fb , this obj
// ?bind
// .bind( , 1, 2,...);
:
var obj = {key:"value"}
var foo = function(){
console.log(this)
}
foo.bind(obj)() // obj
해석:해석:bind 방법을 사용하지 않았을 때foo()의this는 전역 대상 window를 가리키고,bind 방법을 사용한 후는obj 대상을 가리킨다
역할: 앞의 두 가지는 모두this지향을 바꾸기 위해서입니다.bind는this지향을 바꾸고 이 방법을 복제하여 되돌려줍니다
총결산
apply,call,bind의 차이점:
1. 셋 다 함수의this 대상 지향을 바꿀 수 있다.
2. 셋의 첫 번째 파라미터는this가 가리키는 대상입니다. 이 파라미터나 파라미터가undefined나null이 없으면 기본적으로 전역 window를 가리킵니다.
3. 세 가지 모두 참조할 수 있지만 apply는 수조이고call은 매개 변수 목록이며 apply와call은 일회성 전송 매개 변수이며bind는 여러 번 전송으로 나눌 수 있다.
4.bind는 귀속this 이후의 함수로 잠시 후 호출하기 편리합니다.apply,call은 즉시 실행됩니다.
굵은 체
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
그룹 트리 구조, 그룹 대상, 대상 그룹1. 수조 회전 트리 구조 제목:source=[{ 코드 구현: 2. 그룹 전환 대상 신입 베테랑 3. 대상이수 그룹 신입 베테랑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.