-
Built - in Object 함수JavaScript 2020. 10. 21. 18:24
왜? 빌트인 Object 객체는 유용한 기능을 매소드가 아닌 함수로 지원하는가?
빌트인 Object 객체의 prototype object에 정의되어 있는 요소 (매소드, 프로퍼티) 들은 JS에서 사용하는 모든 객체들이 상속받는다. 따라서 모든 객체들은 빌트인 Object 객체의 매소드, 프로퍼티가 포함이 되어있다.
따라서 빌트인 Object 객체의 prototype object에 정의된 내용이 많으면 많을수록 Object 객체를 상속받는 다른 모든 객체들 또한 사이즈가 커지게 된다. 다음과 같은 단점을 보완하기 위해 빌트인 Object 객체를 유용하게 다룰 수 있는 여러 기능들을 Object 객체의 함수 형태로 지원한다.
따라서 Object 객체의 매소드로 지원되지 않고 객체의 함수로 작성되어 있기 때문에 Object의 인스턴스에서 바로 접근하지는 못하지만 Object 객체를 상속받는 모든 객체들이 메모리의 부담을 덜게 된다.
Built - in Object 함수
Object 객체는 프로퍼티의 추가, 값 접근, 변경 등과 같은 기능을 수행할 수 있게 해주는 디스크립터라는 것을 제공하며 아래와 같다.
타입 속성 이름 속성 값 디폴트 값 개요 데이터 value JS 지원 데이터 타입 undefined 프로퍼티 값으로 사용 writable true or false false false : value 값 변경 불가 악세스 (접근) get Function 객체, undefined undefined 프로퍼티 함수 set Function 객체, undefined undefined 프로퍼티 함수 공용 enumerable true or false false false : for ~ in 문으로 열거 불가 configurable true or false false false : 프로퍼티 삭제 불가 Object 객체의 디스크립터는 위와 같이 속성 이름을 통해 접근하여, 속성 값을 넘겨줌으로써 개요에 설명되어있는 기능을 수행한다. 또한 디스크립터를 사용시 타입이 일치하지 않는 경우에는 사용할 수 없다.
즉 데이터 타입인 value 속성과 악세스 타입인 get 속성 함수를 동시에 사용 할 경우 사용이 불가 하다. 오직 데이터 타입을 사용할 경우 value, writable 속성을 사용해야 한다. 추가적으로 공용 타입은 데이터 타입에 상관 없이 어디든 사용 할 수 있다.
프로퍼티 추가 함수
1. definProperty()
해당 함수는 Object 객체의 인스턴스에 새로운 프로퍼티를 추가시켜주는 함수이다. 추가적으로 속성 설정이 가능하다.
위와 같이 추가할 Object 인스턴스 이름, key 값, { value : 벨류 값, 속성 값 : 참 or 거짓 } 형태의 매개변수를 입력받는다. 여기서 나오는 value, enumerable 들은 위에서 설명한 디스크립터이다.
2. definProperties()
해당 함수는 Object 객체의 인스턴스에 복수개의 새로운 프로퍼티를 추가시켜주는 함수이다. 추가적으로 속성 설정이 가능하다.
위와 같이 enumerable 속성을 false로 할당 시 해당 프로퍼티는 열거할 수 없게 된다.
'JavaScript' 카테고리의 다른 글
getter, setter 함수 (0) 2020.10.21 자바스크립트의 특징 (OOP, 스크립트 언어) (0) 2020.10.20 Array 객체 join(), includes() 매소드 활용 (0) 2020.10.15 Array 객체 매소드 정리 (ES5) (0) 2020.10.14 Array Property List (prototype) (0) 2020.10.13