JavaScript 학습 노트--this 포괄적 해석
this 전면 해석
1. this가 뭐예요?
this
는 우리가 실행할 때 함수를 호출하는 대상을 가리키는 지침이다.
2.this를 사용하는 이유
this는 은밀하게 대상을 인용하는 우아한 방식을 제공하기 때문에 API를 더욱 간결하고 복용하기 쉽게 설계할 수 있다.
3. 바인딩this
3.1 기본 바인딩
먼저 가장 자주 사용하는 함수 호출 유형을 소개합니다. 독립 함수 호출입니다.이 규칙을 다른 규칙을 적용할 수 없을 때의 기본 규칙으로 볼 수 있다.이 경우,this는 전역 대상을 가리킨다.function foo() {
console.log( this.a );
}
var a = 2;
foo(); // 2
3.2 암시적 바인딩
또 하나 고려해야 할 규칙은 호출 위치에 상하문 대상이 있는지, 아니면 어떤 대상에게 보유되거나 포함되었는지이다.function foo() {
console.log( this.a );
}
var obj = {
a: 2,
foo: foo
};
obj.foo(); // 2
3.3 명시적 바인딩
call(..)
와 apply(..)
방법을 사용합니다.첫 번째 인자는 대상입니다. 이 대상을this에 연결하고 함수를 호출할 때 이this를 지정합니다.function foo() {
console.log( this.a );
}
var obj = {
a:2
};
foo.call( obj ); // 2
3.4 new 바인딩
new
를 사용하여 함수를 호출하면 다음 동작이 자동으로 실행됩니다.
새로운 대상을 만듭니다.
이 새 대상은 원형 연결을 실행합니다.
이 새 대상은 함수 호출에 귀속됩니다 this
.
만약 함수가 다른 대상을 되돌려주지 않는다면, new
표현식의 함수 호출은 자동으로 이 새 대상을 되돌려줍니다. function foo(a) {
this.a = a;
}
var bar = new foo(2);
console.log( bar.a ); // 2
4.this 바인딩 우선 순위
기본 바인딩<암시적 바인딩<명시적 바인딩
5. 화살표 함수의this 귀속
화살표 함수는this의 네 가지 표준 규칙을 사용하지 않고 외층(함수 또는 전역)에 따라 1functionfoo() {function foo() {
//
return (a) => {
//this foo()
console.log( this.a );
};
}
var obj1 = {
a:2
};
var obj2 = {
a:3
};
var bar = foo.call( obj1 ); bar.call( obj2 ); // 2, 3 !
주: 본문은 실제로this에 관한 독서 노트입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
function foo() {
console.log( this.a );
}
var a = 2;
foo(); // 2
function foo() {
console.log( this.a );
}
var obj = {
a: 2,
foo: foo
};
obj.foo(); // 2
function foo() {
console.log( this.a );
}
var obj = {
a:2
};
foo.call( obj ); // 2
function foo(a) {
this.a = a;
}
var bar = new foo(2);
console.log( bar.a ); // 2
5. 화살표 함수의this 귀속
화살표 함수는this의 네 가지 표준 규칙을 사용하지 않고 외층(함수 또는 전역)에 따라 1functionfoo() {
function foo() {
//
return (a) => {
//this foo()
console.log( this.a );
};
}
var obj1 = {
a:2
};
var obj2 = {
a:3
};
var bar = foo.call( obj1 ); bar.call( obj2 ); // 2, 3 !
주: 본문은 실제로this에 관한 독서 노트입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.