객체 지향 프로그래밍 --- I 부 (객체를 이해)

서문 
인 ECMAScript는 클래스의 개념이 없다, 그래서 자신의 객체와 클래스 기반 언어의 객체는 다르다.
ECMA-262는 물체로 정의된다 넣어 ".베이스 값, 객체 또는 함수를 포함 할 수있다 속성 순서화 세트" 이 때문에, 우리는 ECMAScript를 해시 테이블 생각할 수
값 데이터 나 기능을 할 수있는 이름 값 쌍들의 세트에 지나지,
각 개체가 참조 형식에 기초하지 생성되고, 상기 기준 유형의 제 5 장에서 설명 될 수있다 기본 형태는, 입력이 현상에 의해 정의 될 수있다

-appreciated 대상
-attribute 유형
ECMA-262 만 시간의 지정된 특성 만 내부에서 다양한 기능을 정의하고, 속성에 대하여 설명한다. ECMA-262은 자바 스크립트 따라서 이러한 특성은 자바 스크립트 엔진을 달성하는 데 사용되는 정의
직접 액세스 할 수 없습니다. 예를 들어 내부 특성치 아이들 두 쌍의 대괄호에 넣어이 사양을 표시하려면 [Enumerable에서들은]
1. 데이터는 속성
데이터의 위치 값을 포함하는 데이터의 속성. 당신은 읽고이 위치에 쓸 수 있습니다. 4 개 개의 데이터 속성은 동작 특성이 설명합니다 있습니다
속성이 속성, 속성의 특성을 수정하거나 속성이 속성에 액세스 수정할 수있는 기능을 재정의하기 위해 전달 될 수 있습니다 삭제합니다 : ·이 [[CONFIGURABLE가]는.
객체에 정의 된 직접 속성, 그 속성을 true로이 기본 값
· [[Enumerable에서]] : 대한-의 여행을 통해 다시 재활용 여부를 나타냅니다. 사실 기본
· [쓰기 가능] : 등록 여부를 나타내는 값을 수정합니다. true로 기본값은
· [[가치]] :이 속성은 데이터 값이 포함되어 있습니다. 이 위치에서 읽을 때 속성을 읽기, 속성 값이 기록 될 때, 새 값이이 위치에 저장됩니다. 기본이 정의되어

2 액세스 속성
데이터 값을 포함하지 않는 속성 접근 자, 그들은 게터와 세터 함수의 쌍을 포함하는 (그러나, 이들 두 가지 기능은 필요하지 않다).
· [[구성 가능]] : 속성이 속성, 속성의 특성을 수정할 수있는 기능을 재정의하기 위해 전달 될 수있다, 또는 속성이 속성에 액세스하기 위해 수정할 수 있습니다 삭제합니다.
객체에 정의 된 직접 속성, 그 속성을 true로이 기본 값
· [[Enumerable에서]] : 대한-의 여행을 통해 다시 재활용 여부를 나타냅니다. true로 기본
· [[가져 오기]] : 속성을 읽을 때 호출 된 함수. 기본값은 정의되어 있지 않습니다
· [[설정] : 속성을 작성할 때 호출 된 함수. 기본값은 정의되지


ECMAScript를 직접 데이터 속성 또는 속성 접근의 속성을 정의되지 않습니다 · 체험.
개인적인 경험을 바탕으로 :
직접 등록 또는 설정 특성, 그 접근 자 속성을 지정받을 경우. 어떤 하나 개의 데이터 속성 특성이 지정된 경우, 해당 데이터 속성.
false로 구성 가능 설정을하지 않은 경우 데이터 속성 및 액세스 속성을 상호 교환 할 수 있습니다
<script>
 var에 사람 = {이름 : "레오" }; 

// 정의 속성에 액세스 
Object.defineProperty (사람, "스타일" , { 
    구성 : false로 , 
    : GET 기능을 () {
         반환 "스타일"+ 은이 .name을 ; 
    } 
    SET : 함수 (값) {
         이 본 .name을 = 값; 
    } 

}) 
CONSOLE.LOG (person.style) // 트리거 속성 GET 메소드 접근 // 출력 스타일 : 레오 
person.style = 'mystyle '; // SET는 액세스 방법의 속성 // 출력 스타일을 트리거 : mystyle 
을 console.log (person.style를); 

//데이터 속성 수정 
(사람, "스타일"Object.defineProperty를 , { 
    값을 : ''   // 액세스 속성과 정의 구성 : 거짓 즉, 자연적으로 주어진 그들은 데이터 속성으로 정의하고, 강제로 정의 할 수없는 속성 
} );

 </ script>

 

<! DOCTYPE HTML> 
<HTML LANG = "EN"> 
<head> 
    <메타 문자 집합 = "UTF-. 8"> 
    <메타 이름 = "뷰포트" 
          내용 = "너비 = 폭 장치, 사용자 확장 초기화 하, NO = 스케일 = 1.0, 최대 스케일 = 1.0, 최소 스케일 = 1.0 "> 
    <META HTTP-EQUIV ="X - UA에 호환 "내용 ="IE = 엣지 "> 
    <제목> 문서 </ 제목> 
</ head> 
<body> 
<script> // 객체의 복수의 속성을 정의 할 가능성이 매우 크기 때문이다. ECMAScript5 또한 Object.defineProperties () 메소드를 정의. // 이 시간, 우리는 데이터 액세스 속성과 방법을 특성있는 var에 예약 = {}; 
    Object.defineProperties (도서, { 
        __year :



    
    2004 , 
        }, 
        에디션 : { 
            쓰기 : 사실 , 
            값 : 1 , 
        }, 
        올해는 { 
            얻을 : 함수 () {
                 반환  .__ 년; 
            } 
            설정 : 함수 (NEWVALUE) {
                 경우 (NEWVALUE> 2,004 ) {
                      ._year = NEWVALUE;
                     .edition + = NEWVALUE - 2004 ; 
                } 
            } 

        } 
    })
     // Object.getOwnPropertyDescriptor ECMAScript5 지정된 속성 기술자 달성 할 수있다 () 메소드를 사용 
    var에 설명 = Object.getOwnPropertyDescriptor (도서, '__ 년' ) 
    을 console.log (기술자);   // {값 : 2004, 쓰기 가능 : 사실 Enumerable에서에 : 구성, false로} false로 
    을 console.log (Object.getOwnPropertyDescriptor (창, '년'));   // {GET : ƒ, SET : ƒ, Enumerable에서 : 거짓 구성에 : false로} 
    // 기억 살 : ECMAScript를, 대물 DOM 오브젝트 및 BOM 포함하는 임의의 개체 Object.getOwnPropertyDescriptor () 메소드를 사용할 수있다 
</ script> 
</ body> 
</ HTML>

 

추천

출처www.cnblogs.com/cl94/p/11257661.html