자바스크립트에서 이 키워드
어떤 객체가 호출되는지(사용 또는 호출)에 따라 다릅니다.
this 키워드는 사용 방법에 따라 다른 객체를 참조합니다.
이것은 메서드에서
const person = {
firstName: "John",
lastName: "Doe",
id: 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
console.log(person.fullName())//John Doe
이 혼자
let x=this;
console.log(x)//window
console.log(this)//window
console.log(window==this)//true
함수의 this(기본값)
function a(){
return this;
}
console.log(a())//window
let b=()=>{
return this;
}
console.log(b())//window
함수의 this(엄격한)
JavaScript 엄격 모드는 기본 바인딩을 허용하지 않습니다.
따라서 엄격 모드에서 함수에 사용될 때 this는 정의되지 않습니다.
'use strict'
function a(){
return this;
}
console.log(a())//undefined
명시적 함수 바인딩
call() 및 apply() 메서드는 미리 정의된 JavaScript 메서드입니다.
둘 다 다른 개체를 인수로 사용하여 개체 메서드를 호출하는 데 사용할 수 있습니다.
아래 예제는 person2를 인수로 사용하여 person1.fullName을 호출합니다. 이는 fullName이 person1의 메서드인 경우에도 person2를 참조합니다.
const person1 = {
firstName:"Manish",
lastName:"Kumar",
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
console.log(person1.fullName.call(person3))//John Doe
기능 차용
bind() 메서드를 사용하면 개체가 다른 개체에서 메서드를 빌릴 수 있습니다.
이 예에서는 2개의 개체(사람 및 구성원)를 만듭니다.
구성원 개체는 개인 개체에서 fullname 메서드를 차용합니다.
const person11 = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person11.fullName.bind(member);
console.log(fullName())//Hege Nilsen
마음에 드셨다면 공유 부탁드립니다.....
Reference
이 문제에 관하여(자바스크립트에서 이 키워드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/omguddu100/this-keyword-in-javascript-1f5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)