PPK는 JavaScript의 this 키워드에 대해 이야기합니다. [번역]_javascript 기술
먼저 이벤트 처리(이벤트 처리)에서 어떻게 사용하는지 이야기한 다음, 이것의 다른 용도에 대해 이야기해 보겠습니다.
나 자신
먼저 doSomething() 함수에서 이것이 가리키는(참조) 것이 정확히 무엇인지 살펴보겠습니다.
function doSomething() { this.style.color = '#cc0000'; }
JavaScript의 this는 항상 실행 중인 함수 "자체"를 가리킵니다. 즉, 함수객체를 가리키는 메소드이다. 페이지에 doSomething() 함수를 정의하고 그 자체가 페이지를 참조합니다. 즉, 자바스크립트 윈도우 객체(전역객체)를 의미합니다. onclick 속성 자체는 HTML 요소에 속합니다.
이 "소유권"은 JavaScript의 OO(객체 지향) 특성에 따른 결과입니다. 자세한 내용은 객체를 연관 배열로 만들기 페이지를 참조하세요.
------------ window -------------------------------------- | / \ | | | | | this | | ---------------- | | | | HTML element | <-- this ----------------- | | ---------------- | | doSomething() | | | | | ----------------- | | -------------------- | | | onclick property | | | -------------------- | | | ----------------------------------------------------------
doSomething()이 관련 예약 없이 실행되면 키워드 this는 윈도우(window)를 가리키며, 이 함수는 윈도우의 style.color를 변경합니다. 그리고 창에는 스타일과 같은 개체가 없으므로 이 함수는 JavaScript 오류를 발생시킵니다.
복사
그래서 이걸 잘 활용하기는 좀 어렵네요. 함수에 사용될 때 위 예제의 경우와 마찬가지로 HTML 요소 "자체"를 가리켜야 합니다. 즉, onclick 속성을 가리키는 함수의 복사본이 있습니다. 전통행사등록에서 어떤 일이 일어나는지 살펴보겠습니다.
element.onclick = doSomething;
copy all 함수는 onclick 속성(현재는 메소드)을 가리키기 때문에 이벤트 핸들러가 실행되면 HTML 요소를 가리키며 색상이 변경됩니다.
------------ window -------------------------------------- | | | | | | | ---------------- | | | HTML element | <-- this ----------------- | | ---------------- | | doSomething() | | | | | ----------------- | | ----------------------- | | | |copy of doSomething()| <-- copy function | | ----------------------- | | | ----------------------------------------------------------
이를 통해 여러 이벤트 핸들러에 대한 함수 복사본을 제공할 수 있습니다. 매번 올바른 HTML 요소를 가리킵니다:
------------ window -------------------------------------- | | | | | | | ---------------- | | | HTML element | <-- this ----------------- | | ---------------- | | doSomething() | | | | | ----------------- | | ----------------------- | | | |copy of doSomething()| <-- copy function | | ----------------------- | | | | | | ----------------------- | | | | another HTML element| <-- this | | | ----------------------- | | | | | | | | | ----------------------- | | | |copy of doSomething()| <-- copy function | | ----------------------- | | | ----------------------------------------------------------
함수가 호출될 때마다 이는 현재 이벤트를 처리하는 HTML 요소("자체" doSomething()의 복사본)를 가리킵니다.
추천
인라인 이벤트 등록을 사용하면 어떨까요?
<element onclick="doSomething()">
여기에는 복사 기능이 없는데 가리키기만 하면 무슨 차이가 있나요? onclick 속성에는 실제 함수가 없고 함수 호출만 포함됩니다.
doSomething();
위의 의미는 "doSomething()으로 이동하여 실행"입니다. doSomething()에서 this 키워드는 다시 전역 창 개체를 가리키며, 그러면 함수는 오류 메시지를 반환합니다.
------------ window -------------------------------------- | / \ | | | | | this | | ---------------- | | | | HTML element | <-- this ----------------- | | ---------------- | | doSomething() | | | | | ----------------- | | ----------------------- / \ | | | go to doSomething() | | | | | and execute it | ---- reference to | | ----------------------- function | | | ----------------------------------------------------------
다른가요?
이를 사용하여 이벤트를 처리하기 위해 HTML 요소에 액세스하는 경우 실제로 onclick 속성에 기록되는지 확인해야 합니다. 그리고 HTML 요소를 가리키는 이벤트 핸들러도 등록됩니다. 이렇게 하면:
element.onclick = doSomething; alert(element.onclick)
당신이 얻는 것은
function doSomething() { this.style.color = '#cc0000'; }
보시다시피 이 키워드는 onclick 메소드에 있습니다. 이는 HTML 요소를 가리킵니다.
하지만 이렇게 하면:
<element onclick="doSomething()"> alert(element.onclick)
당신이 얻는 것은
function onclick() { doSomething() }
이것은 단지 doSomething() 함수를 가리킵니다. 이 키워드는 onclick 메소드에 없습니다. HTML 요소를 가리키지 않습니다.
예시-복사
다음 예에서는 onclick 메소드로 작성되었습니다.
element.onclick = function () {doSomething()} element.attachEvent('onclick',doSomething) <element onclick="doSomething()">
예시 - 가리키기
다음 예에서 이는 창을 가리킵니다.
element.onclick = function () {doSomething()} element.attachEvent('onclick',doSomething) <element onclick="doSomething()">
위의 AttachEvent에 주목하세요. 단점은 Microsoft 이벤트 등록 모델이 함수에 대한 포인터를 생성하고 복사하지 않는다는 것입니다. 따라서 어떤 HTML 이벤트가 현재 처리되고 있는지 파악하는 것이 불가능한 경우도 있습니다.
결합
인라인 이벤트 등록을 사용할 때 이를 함수에 보낼 수도 있습니다. 따라서 다음과 같이 사용할 수 있습니다.
<element onclick="doSomething(this)"> function doSomething(obj) { // this is present in the event handler and is sent to the function // obj now refers to the HTML element, so we can do obj.style.color = '#cc0000'; }

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

C 언어에서 static 키워드의 역할과 사용법에 대한 심층 분석 C 언어에서 static은 함수, 변수 및 데이터 유형을 정의하는 데 사용할 수 있는 매우 중요한 키워드입니다. static 키워드를 사용하면 객체의 링크 속성, 범위, 생명주기가 변경될 수 있습니다. C 언어에서 static 키워드의 역할과 사용법을 자세히 분석해 보겠습니다. 정적 변수 및 함수: 함수 내에서 static 키워드를 사용하여 정의된 변수를 전역 수명 주기를 갖는 정적 변수라고 합니다.

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.
