자바스크립트 기초 8
call
call 메서드는 모든 함수에서 사용할 수 있으며, this를 특정값으로 지정할 수 있다.
const mike = {
name: "mike",
};
const tom = {
name: "tom",
};
function showThisName() {
console.log(this.name);
}
function update(birthyear, occupation) {
this.birthyear = birthyear;
this.occupation = occupation;
}
showThisName.call(mike);
update.apply(mike, [1999, "singer"]);
update.call(mike, 1999, "singer");
console.log(mike);
apply
apply는 함수 매개변수를 처리하는 방법을 제외하면 call과 완전히 같음.
call은 일반적인 함수와 마찬가지로 매개변수를 직접 받지만, apply는 매개변수를 배열로 받음.
bind
자바스크립트에서는 함수 호출 방식과 관계없이 this를 지정할 수 있음.
함수의 this 값을 영구히 바꿀 수 있다.
this 키워드는 this를 사용하고 있는 함수가 어떻게 불리는가에 따라서 달라지는 경우가 있습니다. 이때 그 함수의 context가 참고하는 객체를 원하는 것으로 바꾸고 싶을 수도 있습니다. 쉽게 말해서 'this를 내 맘대로 바꿀래~
This
자바스크립트를 공부하는데에 있어서 가장 짜증났던 부분임...
자바스크립트에서 this는 기본적으로 window이다. 경우에 따라서 달라지는데,
this는 함수 내에서 함수 호출 맥락(context)를 의미한다. 맥락이라는 것은 상황에 따라서 달라진다는 의미인데 즉 함수를 어떻게 호출하느냐에 따라서 this가 가리키는 대상이 달라진다는 뜻이다.
생성자내에서 this는 생성자가 만든 객체를 지칭한다. window내에서 this는 window, 생성자내에서의 this는 생성될 객체(호출후 객체생성)
method 에서 this는 mothod 가 소속된 객체지칭한다.
여기까지는 무난한데..
자바에서 this 는 객체 자신을 가리키는 참조값이다. JS의 경우 this는 함수 호출방식에 따라, this에 바인딩할 어떤 객체가 동적으로 결정된다.
메서드의 내부함수일 경우 this는 전역객체에 바인딩된다.
https://hae-ong.tistory.com/14
https://mingcoder.me/2020/02/27/Programming/JavaScript/this/
그냥 속 편하게 화살표 함수를 쓰면 내가 알던 자바의 this가 된다.
Author And Source
이 문제에 관하여(자바스크립트 기초 8), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@stella6767/자바스크립트-기초-8저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)