자바스크립트 기초 8

1951 단어 bindcallapplyapply

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가 된다.

좋은 웹페이지 즐겨찾기