"이"키워드는 무엇입니까? 자바스크립트에서
이 블로그에서는 이 키워드의 기본 사항과 자바스크립트의 다양한 시나리오에서 키워드가 어떻게 작동하는지 다룰 것입니다.
"THIS"에 들어가기 전에 숙지해야 할 몇 가지 전제 조건이 있습니다.
아시다시피 브라우저는 자바스크립트 코드의 깊은 수준을 이해하지 못하므로 브라우저가 실행할 코드로 변환되어야 합니다. 따라서 브라우저의 JS 엔진은 실행 컨텍스트라는 고급 Javascript 코드를 실행하기 위한 특수 환경을 만듭니다.
실행 컨텍스트에는 두 가지 유형이 있습니다.
이제 우리는 코드가 어떻게 실행되는지 알았습니다. "THIS"부터 시작하겠습니다.
이것은 단순히 함수가 호출된 방식을 의미합니다.
기본 실행 컨텍스트는 전역입니다. 이는 아래 코드에서 볼 수 있듯이 창 개체를 포함하는 전역 컨텍스트를 참조하는 창 개체를 가리킴을 의미합니다.
function abc(){
console.log(this)
}
abc() /* which will gives you
window object:-Window {window: Window, self:
Window, document: document,...} */
그러나 어떤 함수에 대해 엄격 모드가 활성화되면 이 값은 코드에서 볼 수 있듯이 엄격 모드에서와 같이 정의되지 않은 것으로 표시됩니다.
function abc(){
'use strict';
console.log(this)
}
abc()// which gives of "undefined" as a value of this
생성자 함수가 있는 "this"
함수가 new 키워드로 호출되면 호출될 때마다 새 인스턴스를 생성하므로 이 값은 코드에서 볼 수 있듯이 가장 최근에 생성된 인스턴스를 참조합니다.
function capitalOfCountry(country,capital){
this.country = country ;
this.capital = capital ;
console.log(`${this.capital} is a capital of ${this.country } `)
}
new capitalOfCountry("India","New Delhi")// New Delhi is a capital of India
new capitalOfCountry("Dhaka", "Bangladesh")//Bangladesh is a capital of Dhaka
호출과 함께 "this"적용 및 바인딩
이것의 사용자 지정 값을 설정하기 위해 우리는 모든 자바스크립트 함수와 함께 제공되는 메서드를 호출, 적용 및 바인딩하는 데 사용합니다.
Call과 Apply의 유일한 차이점은 apply의 두 번째 인수가 인수를 포함하는 배열이고 in call 인수가 개별적으로 전달된다는 점입니다.
function capitalOfCountry(country,capital){
this.country = country ;
this.capital = capital ;
this.dispalyCapitalOfCountry = function() {
console.log(`${this.capital} is a capital of ${this.country } `)
}
}
let firstCountry = new capitalOfCountry("India","New Delhi")
firstCountry.displayCapitalOfCountry()//New Delhi is a capital of India
let secondCountry = new capitalOfCountry("Bangladesh","Dhaka")
secondCountry.displayCapitalOfCountry()//Dhaka is a capital of Bangladesh
firstCountry.dispalyCapitalOfCountry.call(secondCountry)//Dhaka is a capital of Bangladesh
그리고 bind 메서드를 사용하면 bind( second country )에 지정된 개체로 새 함수 bind를 생성하므로 이것이 secondCountry를 참조합니다.
function capitalOfCountry(country,capital){
this.country = country ;
this.capital = capital ;
this.dispalyCapitalOfCountry = function() {
console.log(`${this.capital} is a capital of ${this.country }`);
}
}
let firstCountry = new capitalOfCountry("India","New Delhi")
firstCountry.dispalyCapitalOfCountry()//New Delhi is a capital of India
let secondCountry = new capitalOfCountry("dhaka","bangladesh")
secondCountry.dispalyCapitalOfCountry()//bangladesh is a capital of dhaka
let displaySecond = firstCountry.dispalyCapitalOfCountry.bind(secondCountry)
displaySecond()//bangladesh is a capital of dhaka
요약
Reference
이 문제에 관하여("이"키워드는 무엇입니까? 자바스크립트에서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sushilmod/what-is-this-keyword-in-javascript-52e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)