>웹 프론트엔드 >JS 튜토리얼 >js 인스턴스 속성 및 프로토타입 속성에 대한 자세한 설명

js 인스턴스 속성 및 프로토타입 속성에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 16:30:371243검색

자세한 내용은 댓글을 잘 읽어보세요. 헛소리는 그만하고 바로 코드로 넘어가겠습니다.

코드 복사 코드는 다음과 같습니다.


테스트 문서 <스크립트 유형="텍스트/자바스크립트"> //본질적으로 속성과 메소드는 동일합니다. 메소드는 속성이 참조 유형인 함수입니다.
//객체에는 4가지 속성이 있습니다:
// 1, 이 키워드를 통해 생성자가 정의한 속성
// 2, var 키워드
를 통해 생성자가 정의한 속성 //             3. 생성자의 프로토타입 객체에 추가된 속성
//                                                                                                           ~ //인스턴스의 공개 속성: 1 this 키워드를 통해 정의된 속성 액세스 가능 1, 2, 3, 4
//인스턴스의 개인 속성: var 키워드를 통해 정의된 속성 2개. 접근 가능 2
//인스턴스의 공유 속성: 3 인스턴스가 가리키는 프로토타입을 통해 추가된 속성. 접근 가능 1,3,4
//인스턴스의 정적 속성: 4 개체에 동적으로 추가되는 속성입니다. 접근 가능 1,3,4

//요약:
// 인스턴스 속성: 1, 공개
//                     2, 비공개
//           4, 정적 // 프로토타입 속성: 3, 공유됨


//권한 있는 속성으로 정의됩니다. 모두 접근 가능
//var는 개인 속성으로 정의됩니다.
//동적으로 추가된 속성은 공개 속성입니다. 사유 재산 접근 불가

//인스턴스 객체가 가리키는 프로토타입 속성이 프로토타입 속성입니다. 사유 재산은 접근할 수 없으며 공공 재산보다 우선순위가 낮습니다


//인스턴스 속성은 주로 공개 속성과 권한 속성으로 구성됩니다. 둘 다 외부 및 프로토타입 속성을 통해 액세스할 수 있습니다. 가장 큰 차이점은 사유 재산에 접근할 수 있는지 여부입니다
//프로토타입 속성은 인스턴스 속성보다 우선순위가 낮습니다. 외부 액세스 및 인스턴스 속성으로 액세스 가능(개인 속성 제외)

//------여기에 구분선이 있습니다---------------------------- ---

//공용 속성: 외부 환경에 노출되는 객체의 속성입니다. 그것도 물건의 속성이다.
//개인 속성: 개체 내부의 속성에 액세스할 수 없는 경우가 많습니다. 생성자 수준에서만 속성을 고려하는 것이 좋습니다.

// 정적 속성: 동적으로 추가된 속성입니다. 그것도 물건의 속성이다.

// 공통 속성: 생성자가 생성한 모든 인스턴스가 공유하는 속성입니다.

함수 사용자(){
// 공개 속성: 각각의 새로운 User 인스턴스 객체에는 속성이 있습니다.
// 인스턴스 속성이며, 모든 인스턴스의 속성은 메모리를 공유하지 않습니다.
// 외부에서 접근 가능합니다.
This.name='바이론비스'
// 권한 있는 메서드: 모든 새로운 User 인스턴스 객체에는 메서드가 있습니다.
// 인스턴스 메소드이며, 모든 인스턴스 메소드는 메모리를 공유하지 않습니다.
// 외부에서 접근 가능합니다.
// 접근 가능한 공용 속성.
// 접근 가능한 개인 속성.
This.sayName=function(){
경고(이.이름)
경고(this.school)
​​​​​​ Alert(age);//변수 선언이 자동으로 진행됩니다.
경고(this.sex)
             }
// 비공개 속성: 외부에서는 외부에서 접근할 수 없습니다.
// 생성자에게만 의미가 있고 New의 User 인스턴스 객체에는 의미가 없습니다.
          var 연령=22
// Private 메소드: 외부 접근이 불가능합니다.
// 생성자에게만 의미가 있고 New의 User 인스턴스 객체에는 의미가 없습니다.
              기능 sayAge(){
경고(나이)
             }
              sayAge()
         }
// 공통 속성: 공유 메모리.
         User.prototype.school='zky'
// 퍼블릭 메소드: 접근 가능한 퍼블릭 속성.
// 공유 메모리.
​​ ​ User.prototype.saySchool=function(){
경고(this.school)
              경고(this.name)
경고(this.sex)
경고(나이)
         }
        var obj=new User()
// 정적 속성: 동적으로 추가된 인스턴스 속성입니다.
         obj.sex='man'
// 정적 메소드: 동적으로 추가되는 인스턴스 메소드입니다.
          obj.saySex=function(){
경고(this.sex)
경고(이.이름)
경고(this.school)
경고(나이)
          }
//------여기에 구분선이 있습니다---------------------------- ---
//// 이는 이 키워드로 정의된 속성과 동적으로 추가된 속성이 본질적으로 동일하며 인스턴스 객체의 공용 속성으로 간주될 수 있음을 증명합니다.
// 확인: 이 키워드로 정의된 속성은 동적으로 추가된 속성
에 액세스합니다. //       obj.sayName();//true
// 확인: 동적으로 추가된 속성은 이 키워드로 정의된 속성에 액세스합니다.
//       obj.saySex();//true
// 확인: 공개 속성이 비공개 속성에 액세스합니다
//       obj.sayName();//true
               obj.saySex();//false
// 확인: 공유 속성이 비공개 속성에 액세스합니다
//       obj.saySchool();///false


테스트 문서

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.