자바스크립트에서 이 키워드
11739 단어 beginnersjavascriptwebdev
소개 :-
자바스크립트에서 가장 혼란스러운 주제 중 하나
따라서 개체에 액세스하기 위해 메서드에서 이 키워드를 사용할 수 있습니다.
다른 프로그래밍 언어인 javascript와 달리 이 키워드는 다르게 동작합니다. 객체의 메서드가 아니더라도 모든 함수에서 사용할 수 있습니다.
이 키워드
이 키워드의 사용
const user = {
name: 'hero',
age: 21,
data() {
console.log('user name', this.name)
console.log("user age", this.age)
}
}
user.data()
// user name hero
// user age 21
looks easy right
javascript에서 this의 값은 사용되는 함수나 범위를 나타내지 않습니다.
함수의 호출 컨텍스트와 호출 위치에 따라 값을 참조합니다.
바인딩은 'this' 키워드를 이해하는 데 중요합니다.
기본 바인딩
const myFunction = function() {
console.log(this);
}
myFunction(); // Window
창 컨텍스트에서 function()을 호출하면 창 개체를 참조합니다.
var myFunction = function() {
console.log(this.a);
}
var a = 200
myFunction(); // 200
위의 함수에서 this는 전역 컨텍스트를 참조하고 전역 컨텍스트에서 호스팅하기 때문에 var를 사용하는 경우에만 작동하는 200을 반환합니다.
암시적 바인딩
function foo(){
console.log(this.a);
}
var obj = {
a:2,
foo:foo
};
obj.foo(); // 2
보시다시피 obj.foo()는 객체 obj를 참조하고 2를 반환합니다.
function foo(){
console.log(this.a);
}
var obj = {
a:2,
foo:foo
};
var fun = obj.foo;
fun() //undefined
obj.foo를 var에 할당하면 함수 자체를 참조합니다.
명시적 바인딩
특정 개체를 사용하여 함수를 호출하려는 경우 명시적 바인딩을 사용합니다.
호출, 바인드 및 적용을 사용할 수 있습니다.
const obj = {
name:'hero',
age:21
}
function foo (){
console.log('user name', this.name)
console.log("user age", this.age)
}
foo.call(obj)
// user name hero
// user age 21
use를 호출하여 이를 위해 사용해야 하는 객체를 함수에 명시적으로 알려줍니다.
적용 방법은 호출과 동일하게 작동하지만 호출과 적용의 유일한 차이점은 배열로 전달되는 적용 함수 인수에 있습니다.
function.call(obj, arg1, arg2)
function.apply(obj, [arg1], [arg2])
바인드 사용 원래 기능으로 작동하지만 이 미리 정의된 새 기능을 만듭니다.
function foo(){
console.log(this.a);
}
var obj = {
a:2,
foo:foo
};
var fun = foo.bind(obj);
fun() //2
새로운 연산자 방법
new 연산자를 사용하면 사용자 정의 개체 유형 또는 생성자 함수가 있는 내장 개체 유형 중 하나의 인스턴스를 만들 수 있습니다.
const newObj = new Car('toyota','nissan','honda')
function Car(carOne, carTwo, carThree) {
this.carOne = carOne;
this.carTwo = carTwo;
this.carThree = carThree;
}
const newObj = new Car('toyota','nissan','honda')
console.log(newObj.carTwo); //nissan
new 연산자는 명시적 바인딩 및 암시적 바인딩보다 우선 순위가 가장 높습니다. 가장 낮은 우선 순위에는 기본 바인딩이 있습니다.
🥶이 화살표 기능
const arrowFun = ()=> console.log('this will not bind')
네 😂
화살표 함수에는 자체 바인딩이 없기 때문입니다. 화살표 함수는 이 인수 메서드를 사용할 수 없습니다.
const obj = {
name: 'harshit'
}
const fun = () => {
console.log(this.name)
}
fun.call(obj) // <empty string>
화살표 기능은 new.target에 액세스할 수 없습니다.
화살표 함수는 일반적으로 범위 설정에 의존하는 호출, 적용 및 바인딩 메서드에 적합하지 않습니다.
읽어 주셔서 감사합니다
Reference
이 문제에 관하여(자바스크립트에서 이 키워드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/harshitpaliwal95/this-keyword-in-javascript-3djn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)