JavaScript를 마스터하는 마지막 단계 '이'키워드
this
코어 포인트 this
javaScript의 키워드는 현재 실행 컨텍스트를 가리키며, 특히 객체 지향 프로그래밍 또는 에 크게 의존하는 프레임 워크 및 라이브러리를 사용하는 경우 개체를 조작하고 상호 작용하는 데 필수적입니다. 키워드
- 의 일반적인 문제에는 추출 된 방법, 콜백 함수 및 클로저에서의 사용이 포함됩니다. 이러한 문제는 메소드를 사용하여
- 키워드를 올바른 개체에 명시 적으로 바인딩하여 해결할 수 있습니다.
this
ecmAScript 6은 직접 동봉 범위에서 this - 의 값은 함수가 호출되는 방식에 따라 다릅니다. 이 방법에서 는 정상적인 함수에서
this
를 가리 킵니다. 이벤트 핸들러에서 새로 생성 된 객체를 가리 킵니다.bind()
this
FAQ를 해결 -
this
이 섹션에서는 키워드를 사용할 때 발생하는 가장 일반적인 문제 중 일부를 탐색하고이를 해결하는 방법을 배우게됩니다. this
1. 추출 방법에서 사용하십시오
- 의 가장 일반적인 실수 중 하나는 객체의 메소드를 변수에 할당하려고하고
this
가 원래 객체를 가리키기를 기대하는 것입니다. 다음 예에서 볼 수 있듯이 이것은 작동하지 않습니다.this
this
new
가this
에 대한 참조 인 것처럼 보이더라도 실제로는this
자체에 대한 또 다른 참조 일뿐입니다. 우리는 이미 통화 위치가 컨텍스트를 결정한다는 것을 알고 있으며 여기서는 전화 위치가call()
이며 이는 간단한 기능 호출입니다.apply()
가베이스가없는 함수를 가리키려면 (특정 객체에 바인딩되지 않은 함수) 코드 하단에bind()
를 추가하면 다음 출력이 표시됩니다.this
.<🎜 🎜> <<>에는 하나의 일반 함수 만 포함되어 있으며, 이는 더 이상 <🎜 객체의 멤버 메소드가 아닙니다. 따라서이 경우var car = { brand: "Nissan", getBrand: function() { console.log(this.brand); } }; var getCarBrand = car.getBrand; getCarBrand(); // 输出:undefined
로그인 후 복사로그인 후 복사는 실제로 로 변환됩니다. 물론 정의되지 않았습니다. 객체에서 메소드를 추출하면 다시 정상적인 기능이됩니다. 물체와의 연결은 차단되며 더 이상 예상대로 작동하지 않습니다. 다시 말해, 추출 된 함수는 취한 객체에 바인딩되지 않습니다. 그래서 우리는 어떻게 그것을 해결합니까? 원래 객체에 대한 참조를 유지하려면 <🎜 🎜> 함수를 <🎜 🎜> 변수에 할당 할 때
키워드는 더 이상 원래 오브젝트가 아니라 메소드를 불리는 객체를 가리킨다. 우리는 원래 정의 된 <🎜 🎜> 객체 대신 <🎜 (버튼 요소)에서getCarBrand
함수를car
객체에 명시 적으로 바인딩해야합니다. <<> 방법을 사용하여 달성 할 수 있습니다.this.brand
window.brand
이제 우리는 우리가 원하는 모습에 대한 컨텍스트를 성공적으로 재정의했기 때문에 올바른 출력을 얻습니다. getBrand()
콜백 함수에서getCarBrand
<<> 2다음 문제는 콜백 함수로 메소드를 통과 할 때 발생합니다. 예를 들면 : getBrand()
car
를 실행합니다. 그러므로function(){ console.log(this.brand); }
로그인 후 복사로그인 후 복사는 더 이상 를 가리키지 않고 <🎜 🎜>를 가리 킵니다. 원래 객체에 대한 참조를 변경하지 않으려면 <🎜 object> 메소드를 사용하여 <🎜 🎜> 함수를
객체에 명시 적으로 바인딩해야합니다.이제 모든 것이 예상대로 작동합니다. <<> 3this
를 사용한다는 것입니다. 다음 예를 고려하십시오 :
입니다. 클로저 함수 (내부 함수)가 외부 함수의 <🎜 🎜> 변수에 액세스 할 수 없기 때문입니다. 내부 함수에서this
여기서 출력은 가 글로벌 오브젝트에 바인딩되기 때문에 최종 결과는var getCarBrand = car.getBrand.bind(car); getCarBrand(); // 输出:Nissan
로그인 후 복사가 와 동일하다는 것입니다. 이 문제를 해결하기 위해서는
car.getBrand
를 <🎜 🎜> 함수에 바인딩해야합니다.getBrand()
car.getBrand
이 결합은 this
와 동일합니다. 클로저를 수정하는 또 다른 인기있는 방법은 <🎜 값을 다른 변수에 할당하여 예상치 못한 변경을 방지하는 것입니다.el
var car = { brand: "Nissan", getBrand: function() { console.log(this.brand); } }; var getCarBrand = car.getBrand; getCarBrand(); // 输出:undefined
로그인 후 복사로그인 후 복사여기서 <🎜 값은 <🎜 ,
<<> ecmascript의 구출 6this
,_this
,that
,self
에 할당 될 수 있습니다. , <🎜 🎜>,me
,my
, 대상의 가명 또는 귀하에게 적합한 다른 이름. 열쇠는 원래 객체에 대한 참조를 유지하는 것입니다.context
이전의 예에서는 <🎜 값을 다른 변수에 할당 할 때 소위 "어휘 메소드 "를 볼 수 있습니다. ECMAScript 6에서는 유사하지만 더 우아한 기술을 사용하여 새로운 화살표 기능으로이를 달성 할 수 있습니다. 화살표 함수는값을 얻습니다. 화살표 함수의 어휘 결합은
다음 경우this
연산자를 사용하더라도 덮어 쓸 수 없습니다. 이제 화살표 함수를 사용하여this
문을 대체하는 방법을 살펴 보겠습니다.function
=>
this
<<> 기억해야 할 사항new
<🎜 🎜> <<> 우리는 다른 메커니즘과 마찬가지로var self = this;
키워드를보고 간단한 규칙을 따르고 이해하면 더 많은 자신감을 가지고 메커니즘을 사용할 수 있습니다. 그래서, 우리가 배운 내용 (이 기사와 이전 기사에서)을 간단히 살펴 보겠습니다.는 글로벌 대상을 가리 킵니다.function(){ console.log(this.brand); }
로그인 후 복사로그인 후 복사가장 바깥 쪽 컨텍스트에서 기능 블록 외부. 객체 메소드가 아닌 함수에서. 객체 생성자가 아닌 함수에서 . this
함수가 부모 객체의 속성으로 호출되면 는 부모 객체를 가리 킵니다.
this
함수가 또는 를 사용하여 호출되면이 메소드로 전달 된 첫 번째 매개 변수를 가리 킵니다. 첫 번째 매개 변수가 - 이거나 객체가 아닌 경우
- 는 전역 객체를 가리 킵니다.
this
- 연산자를 사용하여 함수를 호출 할 때 는 새로 생성 된 객체를 가리 킵니다.
-
화살표 함수를 사용할 때 (ECMAScript 6에 소개 됨)
는 어휘 스코프에 따라 다르며 부모 객체를 가리 킵니다. - 가 무엇을 가리키는 지 쉽게 예측할 수 있으며, 그것이 원하는 것이 아닌 경우, 어떤 방법을 사용하여이를 수정할 수 있는지 알 수 있습니다. 요약
이러한 단순하고 명확한 규칙을 배우면 -
- 키워드는 마스터하기 어려운 개념이지만 더 많은 연습으로 마스터 할 수 있습니다. 이 기사와 이전 기사가 귀하의 이해의 기초가되며 다음에 두통을 줄 때 귀중한 참조가되기를 바랍니다.
this
javaScript 키워드 (FAQS)의 FAQ
- (FAQ 부품은 너무 길고 이전 내용과 함께 복제되어 있기 때문에 여기서 생략됩니다. FAQS 부분은 더 일찍 자세히 설명되었습니다.)
javaScript의 - 는 전역 객체를 가리 킵니다.
위 내용은 JavaScript를 마스터하는 마지막 단계 '이'키워드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

이 기사에서 시차 스크롤 및 요소 애니메이션 효과 실현에 대한 토론은 Shiseido 공식 웹 사이트 (https://www.shiseido.co.jp/sb/wonderland/)와 유사하게 달성하는 방법을 살펴볼 것입니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

프론트 엔드에서 VSCODE와 같은 패널 드래그 앤 드롭 조정 기능의 구현을 탐색하십시오. 프론트 엔드 개발에서 VSCODE와 같은 구현 방법 ...
