이전 비디오에서 다시 한번 우리는 키워드의 값을이 명시 적 바인딩으로 결정하는 세 번째 규칙에 대해 논의했습니다.
우리는 call apply와 bind를 사용하는 것이 키워드의 문맥을 바꿀 수 있다는 것을 배웠다.
이제 첫 번째 코드 블록이 이전에 본 코드 블록과 동일한 호출을 사용하여 이전 문제를 해결할 수있는 방법을 살펴 보겠습니다.
그러나 두 번째 섹션에서 어떤 일이 일어나는지 보겠습니다.
이전에 우리는 개를 개라고 불러서 안녕하세요. 안녕하세요.
say hello 함수 안에있는 this 키워드의 값이 firstname 속성을 가지고 있지 않은 dog 객체를 참조하기 때문에 undefined가 발생합니다.
우리가 전화를 사용하고 있기 때문에 이제는 키워드의 가치를 원하는대로 바꿀 수 있습니다.
그러니 그것을 사람 객체로 바꾸자.
이제 우리는이 함수가 Hello 호출을 반환하고 문제가 해결되었음을 알 수 있습니다.
또한 dog 객체 내에서 컨텍스트를 결정하고 this 키워드의 값을 변경하여 함수가 true를 반환하도록 할 수 있습니다.
주목할 중요한 점은 우리가 hello를 호출하거나 우리가 호출을 첨부하는 컨텍스트 방식을 결정하지 않는다는 것입니다.
그래서 안녕 인사하고 문맥을 결정한 후 괄호가 없습니다.
우리가 call을 사용할 때 call은 매우 자주 사용되는데, 아래의 예제와 같은 코드 적용을 피하기 위해서입니다.
여기서 우리는 차가운 두 개체와 L.E. 둘 다 이름 속성을 가지고 있고 그들은 Hi 메소드라고합니다.
이 코드는 완전히 잘 동작하지만, elete 객체의 내부에서 꽤 많은 것을 반복하고 있습니다. 객체 내부의 hi 메소드는 차가운 객체 내부의 같은 메소드와 동일합니다.
어떻게 우리 코드를 리팩토링하고 객체 내부의 높은 메소드를 제거 할 수 있을까요?
우리가 정말로하고 싶은 것은 컬트 객체에서와 같은 높은 방법을 사용하는 것입니다.
그러나 추위를 나타내는 키워드 대신 L-E 개체로 명시 적으로 설정하려고합니다.
지금 비디오를 일시 중지하고 통화를 사용하여 문제를 해결하는 방법을 알아낼 수 있는지 확인하십시오.
솔루션을 살펴 보겠습니다.
우리는 객체로부터 say hi 메쏘드를 제거하고 우리는 this 키워드의 값을 L-E로 설정하기 위해 call을 사용합니다.
say hi 메쏘드가 호출 될 때, call 메쏘드의 첫 번째 매개 변수는 this 키워드가 참조하기를 원하는 것입니다.
우리는 이것을 ARG라고 부릅니다.
다시 한번이 물건은 아주 까다 롭습니다.
따라서 이전 슬라이드를 조금 혼란스럽게 느끼고 크롬 콘솔에이 예제를 입력하여 다음 비디오에서 무슨 일이 일어나는지 정확하게 확인하십시오.
우리는 적용을 살펴보고 apply를 사용하여 키워드의 컨텍스트를 설정하는 방법과 apply를 호출하는 함수에 인수를 전달하는 방법을 살펴볼 것이다.