이것
이것은 JavaScript의 키워드입니다. 이것의 값은 함수 사용에 따라 변경됩니다. 그러나 항상 원칙, 즉 기능을 부르는 객체를 말합니다.
1. 정의
1. 이것은 함수 내부의 특수한 객체 (또는이 참조)입니다 - 함수가 실행되는 환경 객체를 나타냅니다.
2.이 참조는 JavaScript 코드에서 언제든지 사용할 수있는 읽기 전용 변수입니다. 이 참조 참조 (포인트)는 코드 컨텍스트에 따라 기준 객체를 자동으로 변경하는 특성을 갖는 객체입니다. 인용 규칙은 다음과 같습니다.
• 가장 바깥 쪽 코드 에서이 참조는 전역 객체를 나타냅니다.
• 함수 내 에서이 참조는 함수가 호출되는 방식에 따라 다릅니다. 다음과 같이
1) 생성자 호출 -이 참조는 생성 된 개체를 나타냅니다.
2) 메소드 호출 -이 참조는 수신기 개체를 나타냅니다.
3) 적용 또는 전화 -이 참조는 적용 또는 호출의 매개 변수로 지정된 개체를 나타냅니다.
4) 다른 전화 방법 -이 참조는 글로벌 대상을 나타냅니다.
2. 위와 관련 온라인 정보를 기반 으로이 개체의 사용 상태 (인용)는 다음과 같이 요약됩니다.
JavaScript는 동적 언어 이며이 키워드가 실행될 때만 결정할 수 있습니다. 따라서 이것은 항상 발신자, 즉 "호출 객체"에 대한 참조를 가리 킵니다. 간단히 말하면, 어떤 객체가 속한 지하로 말하면, 이것은 그 객체를 가리 킵니다. 기능 호출 방법에 따라 글로벌 객체, 현재 객체 또는 기타 객체를 가리킬 수 있습니다.
1. 글로벌 함수 호출, 글로벌 기능에서 이것은 글로벌 객체 창을 가리 킵니다. (기능 통화 모드)
// 코드 목록 1 <script type = "text/javaScript"> var message = "this in window"; //이 문장은 함수 외부와 함수 내부에 작성됩니다. function func () {if (this == Window) {alert ( "this == Window"); 경고 (메시지); this.methoda = function () {alert ( "I 'm a function");}}}} func (); // func 메소드가 호출되지 않으면 정의 된 속성 또는 메소드는 Methoda (); </script>에 의해 검색되지 않습니다.func () 호출의 결과는이 == 창입니다.
Methoda ()에 대한 호출의 결과는 내가 함수입니다.
2. 생성자 호출, 즉 새 개체를 인스턴스화하면 생성자를 통해 생성 된 객체를 가리 킵니다. (생성자 통화 모드)
코드 목록 2
<script type = "text/javaScript"> function func () {if (this == Window) {alert ( "this == Wind // 이것은 객체 obj </script>를 가리 킵니다3. 객체 방법을 호출하면 현재 객체를 가리 킵니다. 함수가 객체의 메소드로 사용되거나 할당되는 한 모든 함수는 함수 내부에서 객체 자체에 대한 참조입니다. 또한 이것은 일반적인 물체로 작성되었으며 이는 물체 자체를 가리 킵니다. (메소드 통화 모드)
(방법의 정의 : 객체 속성으로서의 함수를 메소드라고합니다)
// 코드 목록 3 <script type = "text/javaScript"> var obj = {x : 3, doit : function () {if (this == Wind // 이것은 객체 obj </script>를 가리 킵니다4. 적용 또는 호출 방법을 통해 전화를 걸면 통과 된 객체를 가리 킵니다.
적용 또는 호출 방법을 사용하여 다른 객체 대신 메소드를 호출 할 수 있습니다. 호출 메소드는 기능의 객체 컨텍스트를 초기 컨텍스트에서 thisobj가 지정한 새 개체로 변경합니다. thisobj 매개 변수가 제공되지 않으면 글로벌 객체는 thisobj로 사용됩니다. (통화 모드 적용)
// 코드 목록 4 <script type = "text/javaScript"> var obj = {x : 3, doit : function () {alert ( "메소드는 :" + this.x);}}; var obj2 = {x : 4}; obj.doit (); // 3, 이것은 objobj.doit.apply (obj2)를 가리 킵니다. // 4, 이것은 obj2obj.doit.call (obj2)을 가리 킵니다. // 4, 이것은 obj2 </script>를 가리 킵니다5. 이것은 프로토 타입 체인에서 - 프로토 타입 객체와 생성자 의이 부분은 새로 생성 된 인스턴스 객체를 가리 킵니다. 프로토 타입 확장 방법을 사용하여이를 사용하여 소스 객체의 인스턴스를 얻으십시오. 그리고 프로토 타입 체인을 통해 개인 필드를 얻을 수 없습니다.
// 코드 목록 5 <script type = "text/javaScript"> function func () {this.fielda = "나는 필드입니다"; var privatefielda = "var";} func.prototyp = {extendMethod : function (str) {alert (str + " + this.fielda); // 오류가 발생했으며, 프로토 타입 체인을 통해 개인 필드를 얻을 수 없습니다. }}; var obj = new func (); obj.extendMethod ( "프로토 타입에서"); // 현재 생성자와 프로토 타입 체인 에서이 포인팅 객체 obj에서 obj </script>6. 이것은 클로저에서 - 폐쇄 : 함수에 기록 된 함수는 글로벌 객체 창을 가리 킵니다.
6.1 객체의 폐쇄
// 코드 목록 6 <script type = "text/javaScript"> var name = "wind // 창 </script>
이 시점에서 이것은 클로저에서 글로벌 오브젝트 창을 가리키며 글로벌 객체의 속성 만 얻을 수 있습니다. 객체 내부의 속성 (외부 함수 변수)에 액세스하려면 어떻게해야합니까? 외부 함수 의이 객체를 폐쇄로 액세스 할 수있는 변수에 저장하십시오. 다음 코드를보십시오.
// 코드 목록 7 <script type = "text/javaScript"> var name = "wind // 내 객체 </script>
외부 함수에 해당 변수에 할당하면 외부 함수의 변수를 읽을 수 있습니다.
6.2 함수를 직접 참조하든 함수를 인스턴스화하든, 이것은 폐쇄 함수에서 창을 가리 킵니다.
// 코드 목록 8 <script type = "text/javaScript"> function a () {alert (this == Wind // true, true, [객체 창] var c = new a (); c (); // false, true, [Object Object] </script>7. 함수는 bind () 메소드를 사용하여 객체를 바인딩하며, 이는 bind () 함수로 전달 된 값을 가리 킵니다.
// 코드 목록 9 <script type = "text/javaScript"> wind // 블루 </script>
8. HTML 요소에 내장 된 스크립트 세그먼트는 요소 자체를 가리 킵니다.
// 코드 목록 10 <div onclick = "test (this)"id = "div"> 클릭 </div> <script type = "text/javaScript"> 함수 테스트 (obj) {alert (obj); // [Object htmlDivelement]} </script>9. 스크립트 태그로 쓰기 : 이것은 글로벌 객체 창을 나타냅니다. 이것은 첫 번째 지점에서 글로벌 기능이 호출하는 글로벌 변수와 동일합니다.
위는 편집자가 귀하에게 소개 한 JavaScript의 인용문입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!