• 검색 결과가 없습니다.

ECMAScript 5 Object 객체

문서에서 8 기본 내장 객체 (페이지 49-58)

ECMAScript 5에서 Object 객체에 추가된 메소드

8.11.1 객체 속성 추가

Object 객체에 속성을 추가하는 메소드

– Object.defineProperty(객체, 속성이름, 속성관련옵션);

인자 설명

– 객체: 속성을 추가하려는 객체 – 속성이름: 추가하려는 속성의 이름

– 속성관련옵션: 추가하려는 속성과 관련된 여러 가지 옵션

• 표 8-20

• value:이 속성에 들어갈 값 지정

• writable: 이 속성의 값을 수정할 수 있는지 지정

• get: getter 메소드 지정

• set: setter 메소드 지정

• configurable: 이미 추가한 속성의 설정을 변경할 수 있는 지 지정

• enumerable: for in 반복문으로 검사할 수 있는지 지정

8.11.1 객체 속성 추가

Object 객체에 속성을 추가하는 메소드

– Object.defineProperty(객체, 속성이름, 속성관련옵션);

코드 8-57

– name 속성의 값을 변경할 수 없으며, for in 반복문으로 접근할 수 없음

코드 8-58

– set 옵션과 get 옵션 이용

– setter와 getter는 필요 시 자동으로 호출됨

• 코드 8-59 (캡슐화에 이용함)

코드 8-60

– name 속성의 configurable 옵션을 true로 했으므로, name 속성의 옵 션을 재지정할 수 있음

8.11.2 객체 생성

ECMAScript 5의 객체 생성 메소드

– Object.create(원본객체, 추가하고자하는속성및옵션)

인자

– 원본객체: 객체 생성 시 복제하고자 하는 원본 객체

– 추가하고자하는속성및옵션: 복제한 객체에 추가하고자 하는 속성과 이 속성의 옵션 지정

코드 8-62

– 빈 객체를 기반으로 name과 region 속성을 추가함

코드 8-63

– create( ) 메소드는 기존의 객체를 복제하므로, 상속이라고 볼 수 있음 – getOwnPropertyNames( ) 나 keys( ) 메소드를 사용하면, 새로 추가한

속성만 얻어옴

– 물론, 새로 생성된 객체를 통해서 기존 객체의 속성을 접근할 수는 있 음

8.11.3 동적 속성 추가 제한

ECMAScript 5의 동적 속성 추가를 제한하는 메소드

– Object.preventExtensions(객체)

매개변수인 객체에 동적으로 속성을 추가하는 것을 금지하는 메소

– Object.isExtensible(객체)

매개변수인 객체에 속성 추가가 가능한지 검사하는 메소드 – 코드 8-65

Object.preventExtensions(object) 실행 후에는, 속성을 추가하는 것 이 불가능함

8.11.4 동적 속성 삭제 제한

ECMAScript 5의 동적 속성 삭제를 제한하는 메소드

– Object.seal(객체)

매개변수인 객체에 동적으로 속성을 제거하는 것을 금지하는 메소

– Object.isSealed(객체)

매개변수인 객체에 속성 제거가 가능한지 검사하는 메소드 – 코드 8-66

Object.seal(person) 실행 후에는, 속성을 제거하는 것이 불가능함

속성 제거 시에는, delete 키워드를 사용한다.

– 예: delete person.name;

8.11.4 동적 속성 삭제 제한

ECMAScript 5의 동적 속성 삭제/수정을 제한하는 메소드

– Object.freeze(객체)

매개변수인 객체의 속성을 삭제하거나 속성의 값을 수정하지 못하 도록 하는 메소드

– Object.isFrozen(객체)

매개변수인 객체의 속성을 삭제하거나 속성의 값을 수정하지 못하 는지 검사하는 메소드

8.11.5 객체 보조 메소드

ECMAScript 5의 객체 보조 메소드

– Object.keys(객체)

enumerable 옵션이 true인 속성들을 배열로 만들어서 리턴함

defineProperty( ) 메소드로 속성을 추가하면, 이 속성의 enumerable 옵션의 값은 기본적으로 false 이다.

다른 방법으로 속성을 추가하면, enumerable 옵션의 값이 true임

– 예: object.age = ‘30’; 에서의 age 속성

– Object.getOwnPerpertyNames(객체)

매개변수인 객체가 스스로 지닌 모든 속성을 배열로 만들어서 리턴

– 코드 8-67

8.11.5 객체 보조 메소드

ECMAScript 5의 객체 보조 메소드

– Object.getOwnPropertyDescriptor(객체, 속성이름)

매개변수인 객체의 특정 속성의 옵션 객체를 추출하는 메소드

코드 8-68

– Object.getOwnPropertyDescriptor(person, ‘name’);

– defineProperty( ) 메소드로 속성을 추가하면

• writable, enumerable, configurable 속성이 모두 false 임을 알 수 있다.

• 예: object 객체의 region 속성

문서에서 8 기본 내장 객체 (페이지 49-58)

관련 문서