03JavaScript 대상 - 대상 지향

1. 대상 에 대한 두 가지 의혹
2. 대상 과 자 바스 크 립 트 대상 을 대상 으로
1. 대상 에 대한 두 가지 의혹
  • 왜 자 바스 크 립 트 (ES6 까지) 는 대상 의 개념 이 있 지만 유형 개념 이 없 습 니까?
  • 왜 자 바스 크 립 트 대상 에 속성 을 자 유 롭 게 추가 할 수 있 지만 다른 언어 는 안 됩 니까?

  • 2. 대상 과 자 바스 크 립 트 대상 을 대상 으로
    대상 을 향 하 다
    Object (대상) 는 영어 로 모든 사물 의 총칭 이지 만 중국어 로 는 전문 명사 입 니 다.서로 다른 프로 그래 밍 언어 에서 디자이너 도 다양한 언어 특성 을 이용 하여 대상 을 묘사 했다. 가장 성공 적 인 것 은 '클래스' 방식 으로 대상 을 묘사 하 는 것 이다. 예 를 들 어 자바, c + +, 자바 스 크 립 트 는 이변 적 인 방식 인 원형 을 선택 했다.
    자 바스 크 립 트 대상
    JavaScript 대상 의 특징
  • 대상 은 유일한 표지 성 을 가진다. 같은 두 대상 을 완성 하 더 라 도 같은 대상 이 아니다.
  • 대상 은 상태 가 있다. 대상 은 상태 가 있 고 같은 대상 은 서로 다른 상태 에 있 을 수 있다.
  • 대상 은 행위 가 있다. 즉, 대상 의 상 태 는 그의 행위 로 인해 변화 할 수 있다.
  • var o1 = {
          a: 1}
    var o2 = {
          a: 1}
    console.log(o1 == o2)   // false
    

    두 번 째 와 세 번 째 특징 에 대해 자 바 는 그들 을 '속성' 과 '방법' 이 라 고 부른다. 자 바 스 크 립 트 에서 상태 와 행 위 를 '속성' 으로 추상 화하 고 구체 적 인 예 는 다음 코드 를 볼 수 있다.
    var o = {
         
    	d: 1;
    	f(){
         
    		console.log(this.d)
    	}
    }
    

    대상 o 에서 d 는 하나의 속성 이 고 함수 f 도 하나의 속성 입 니 다.자 바스 크 립 트 에서 대상 의 상태 와 행 위 는 모두 속성 으로 추상 화 된다.대상 의 기본 적 인 특징 을 실현 한 토대 에서 자 바스 크 립 트 대상 만 의 특징 은 대상 이 고도 의 동태 성 을 가지 고 있다 는 것 이다. 이것 은 자 바스 크 립 트 가 사용자 가 실행 할 때 대상 에 게 대상 을 바 꾸 는 행위 와 능력 을 부 여 했 기 때문이다.
    var o = {
          a: 1 }
    o.b = 2
    console.log(o.a, o.b)   // 1  2
    

    JavaScript 대상 의 두 가지 속성
    자 바스 크 립 트 는 속성 을 한 그룹의 특징 으로 설명 합 니 다.속성 은 데이터 속성 과 접근 기 속성 으로 나 뉜 다.
    데이터 속성
  • value: 속성의 값.
  • writable: 속성 이 할당 되 는 지 여 부 를 결정 합 니 다.
  • enumerable: for in 이 이 속성 을 매 거 할 수 있 는 지 여 부 를 결정 합 니 다.
  • configurable: 이 속성 이 삭제 되 거나 특징 값 을 변경 할 수 있 는 지 결정 합 니 다.

  • 접근 기 속성 (getter / setter)
  • getter: 함수 나 undefined 는 속성 값 을 가 져 올 때 호출 됩 니 다.
  • setter: 함수 나 undefined, 속성 값 을 설정 할 때 호출 됩 니 다.
  • enumerable: for in 이 이 속성 을 매 거 할 수 있 는 지 여 부 를 결정 합 니 다.
  • configurable: 이 속성 이 삭제 되 거나 특징 값 을 변경 할 수 있 는 지 결정 합 니 다.

  • 내 장 된 함수 getOwnProperty Descriptor (대상, "속성") 를 통 해 데이터 속성 보기
    var o = {
          a: 1 };
        o.b = 2;
        //a b      
        Object.getOwnPropertyDescriptor(o,"a") // {value: 1, writable: true, enumerable: true, configurable: true}
        Object.getOwnPropertyDescriptor(o,"b") // {value: 2, writable: true, enumerable: true, configurable: true}
    

    내 장 된 함수 Object. defineProperty (대상, "속성", {접근 기 key: value}) 를 통 해 접근 기 속성 이나 속성 특징 을 정의 합 니 다.
    var o = {
          a: 1 };
        Object.defineProperty(o, "b", {
         value: 2, writable: false, enumerable: false, configurable: true});
        //a b      ,       
        Object.getOwnPropertyDescriptor(o,"a"); // {value: 1, writable: true, enumerable: true, configurable: true}
        Object.getOwnPropertyDescriptor(o,"b"); // {value: 2, writable: false, enumerable: false, configurable: true}
        o.b = 3;
        console.log(o.b); // 2
    

    좋은 웹페이지 즐겨찾기