728x90
300x250
call
const obj = {name:'영희'}; // this를 대체할 객체
const yourName = function {
console.log(`$(this.name)님 반갑습니다.`);
}
yourName.call(obj); // 영희님 반갑습니다.
yourName에 call메소를 이용해서 obj를 호출하면 obj 값을 this를 대체해서 사용할 수 있다.
만약 뒤에 넘겨줄 인자가 있을 경우 call호출 시에 this값 뒤에 인자를 붙여주고
함수에 매개변수를 넣어주면 된다.
const obj = {name:'영희'}; // this를 대체할 객체
const yourName = function(addr) {
console.log(`$(addr)에서 오신 $(this.name)님 반갑습니다.`);
}
yourName.call(obj, '서울'); // 서울에서 오신 영희님 반갑습니다.
그럼 위와 똑같은 예제를 apply로 만들어 보자
apply
const obj = {name:'영희'}; // this를 대체할 객체
const yourName = function(addr) {
console.log(`$(addr)에서 오신 $(this.name)님 반갑습니다.`);
}
yourName.apply(obj, ['서울']); // 서울에서 오신 영희님 반갑습니다.
apply가 call과 다른 점은 인자를 배열로 넣는다는 점이다.
그렇다면 같은 예제를 bind로 나타내면 어떻게 될까?
bind
const obj = {name:'영희'}; // this를 대체할 객체
const yourName = function(addr) {
console.log(`$(addr)에서 오신 $(this.name)님 반갑습니다.`);
}
yourName.bind(obj, '서울'); // undefined
bind 메소드는 객체를 생성하고 호출하지는 않는다.
호출하기 위해서는 변수를 이용하면 된다.
const obj = {name:'영희'}; // this를 대체할 객체
const yourName = function(addr) {
console.log(`$(addr)에서 오신 $(this.name)님 반갑습니다.`);
}
const a = yourName.bind(obj, '서울');
a(); // 서울에서 오신 영희님 반갑습니다.
728x90
반응형
'javaScript > J Query & 스크립트' 카테고리의 다른 글
[javaScript]뒤로가기 금지 스크립트 (0) | 2022.07.17 |
---|---|
제이쿼리 cdn 사용하기 (0) | 2022.07.14 |
자바스크립트 공부하기 좋은 사이트 (0) | 2022.05.18 |
hasClass를 javaScript로 표현하기 (0) | 2022.05.17 |
Document.readyState 자바스크립트 (0) | 2022.05.16 |
댓글