이제 키워드를 다시 믹스에 포함시킬 때 어떤 일이 일어나는지 봅시다.
첫 번째 코드 블록에서 재미있는 부분이 있습니다.
우리는 Say hi라는 메서드를 가지고 있습니다.이 메서드는 설정 타임 아웃을 호출하고 키워드의 first name 속성 값과 연결된 높은 문자열을 기록합니다.
이 코드가 반환하는 것을보기 전에
동영상을 일시 중지하고 이것이 의미하는 핵심 단어가 무엇인지 생각해보십시오.
처음 두 규칙으로 돌아가서 글로벌 컨텍스트에서 핵심 단어입니다.
또는 선언 된 객체의 핵심 단어입니다.
선언 된 객체의 내부에 분명히 있다고 생각할 수 있으며 올바른 것입니다.
그러나 set timeout은 나중 시점에 호출되기 때문에 this 키워드는 부모 객체를 참조하지 않습니다.
실제로 전역 개체를 참조합니다.
이것은 매우 까다 롭고 많은 초보자를 여행합니다.
이제 설정 시간 초과가 나중에 호출되기 때문에 다시 살펴 보겠습니다.
그것이 붙어있는 객체는 실제로 우리가 전에 말했던 것처럼 윈도우입니다. 설정된 타임 아웃은 함수가 실행되는 컨텍스트가 실제로 선언 된 경우 차가운 객체 내부에서 정의 되더라도 윈도우 객체의 메소드입니다 문맥.
그렇다면 우리는 핵심 단어의 올바른 맥락을 잃어 가고 있기 때문에 어떻게이 문제를 풀 수 있을까요.
이것은 우리가 명시 적으로 설정해야하지만 우리는 이것을 가리키는 핵심 단어를 원합니다.
호출과 적용을 사용하여이 작업을 수행 할 수 있지만 나중에 해당 함수를 호출하고 싶기 때문에이 중 하나를 사용하지 않으려합니다.
호출 및 적용이 함수를 즉시 호출한다는 것을 기억하십시오.
이렇게하면 나중에 특정 시점에 함수를 실행하기위한 시간 제한 설정의 목적을 무효화 할 수 있습니다.
따라서 두 번째 코드 블록에서 bind를 사용하면 bind 메소드의 첫 번째 매개 변수로 전달하여 문제를 해결할 수 있습니다.
this 키워드를 참조하는 것이 바람직한 값은 this 키워드를 첫 번째 매개 변수로 전달하는 이유와 완전히 혼동 될 수 있습니다.
그러나 한 걸음 뒤로 물러서서 코드 객체 안에서이 키워드가 무엇을 참조하는지 물어보십시오.
실제로 컬트 객체 자체를 참조합니다.
따라서 우리는 키워드의 올바른 값을 바인딩 타임 아웃의 함수가 호출 될 때 원하는 값으로 바인딩합니다. 키워드 대신 바인드 메소드에 호출 된 변수에 전달할 수 있으며 동일한 결과를 얻을 수 있습니다.
그러나 더 일반적으로 키워드 this를 사용하는 코드가 표시됩니다.
우리가 bind 메소드가 apply를 호출하는 것과는 다르게 함수 정의를 반환한다는 것을 보았고, 함수에 전달할 인수의 값을 모두 알지 못하거나 키워드와 함께 작업 할 때 키워드의 값을 설정하는 데 매우 유용합니다. 비동기 코드.
하나의 마지막 메모.
우리가 다루고있는 자료는 상당히 발전했습니다.
그러나 프로페셔널 자바 스크립트 개발자가되기를 원한다면 프로덕션 코드 기반에서 볼 수있는 코드 종류 일뿐 아니라 여전히이 예제로 상당히 복잡해지면 인터뷰에서 질문을 받게됩니다.
걱정마.
나는이 주제를 많이 가르쳤다. 그리고 항상 처음에는 사람들을 혼란스럽게 만들면서 각 코드 행을 살펴보고 크롬 콘솔에 예제를 입력하여 진행 상황을 확인한다.
언제나 그 질문을 자유롭게 들으실 수 있습니다.
우리는 당신이 다음 비디오에서 배우는 것을 돕기 위해 왔습니다.