Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

22. this #118

Merged
merged 2 commits into from
Mar 14, 2023
Merged

22. this #118

merged 2 commits into from
Mar 14, 2023

Conversation

BARAM1NG
Copy link
Contributor

@BARAM1NG BARAM1NG commented Mar 9, 2023

22. this

✏️ 기억에 남는 내용

  • 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조
    • 동작을 나타내는 메서드는 프로퍼티를 참조하고 변경할 수 있어야 함.
    • 이를 위해서 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 함.
  • this
    • 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수.
    • this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있음.
      • this는 자바스크립트 엔진에 의해 암묵적 생성, 전역에서 참조가능
      • 함수 내부에서 arguments 객체를 지역 변수처럼 사용할 수 있는 것처럼 this도 지역 변수처럼 사용 가능.
        • 단, this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다.
      • 자바스크립트의 this는 함수가 호출되는 방식에 따라 this에 바인딩될 값, 즉, this 바인딩이 동적으로 결정된다.
    • this 바인딩은 함수 호출 방식에 따라 동적으로 결정된다.
      • 동일한 함수도 다양한 방식으로 호출 가능.
        • 일반 함수 호출: 함수 내부의 this에는 전역 객체가 바인딩
          • 일반 함수로 호출된 모든 함수 내부의 this에는 전역 객체가 바인딩
        • 메서드 호출: 메서드를 호출할 때 메서드 이름 앞의 마침표(.) 연산자 앞에 기술한 객체가 바인딩
        • 생성자 함수 호출: 생성자 함수 내부의 this에는 생성자 함수가 생성할 인스턴스가 바인딩
        • Function.prototype.apply/call/bind 메서드에 의한 간접 호출: 메서드에 첫번째 인수로 전달한 객체가 바인딩
          • apply와 call 메서드의 본질적인 기능은 함수를 호출하는 것
            • apply와 call 메서드는 함수를 호출하면서 첫 번째 인수로 전달한 특정 객체를 호출한 함수의 this에 바인딩

📝 간단한 퀴즈

  1. this 바인딩은 함수 호출 방식에 관계없이 동적으로 결정된다. (O/X)
  2. this는 자바스크립트 엔진에 의해 암묵적 생성된다. (O/X)
  3. this는 전역에서 참조 가능하다. (O/X)

🧑🏻‍💻 연관 코드

// 관련 코드를 적어주세요.

@BARAM1NG BARAM1NG self-assigned this Mar 9, 2023
@BARAM1NG BARAM1NG linked an issue Mar 9, 2023 that may be closed by this pull request
Copy link
Member

@L2HYUNN L2HYUNN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@Sun4-me Sun4-me left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

@LSH-0125 LSH-0125 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@BARAM1NG BARAM1NG merged commit ac106d5 into main Mar 14, 2023
@BARAM1NG BARAM1NG deleted the 22/BARAM1NG branch March 14, 2023 10:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

22. this
4 participants