자바스크립트 프로퍼티 플래그, 접근자 프로퍼티 getter, setter

HyosikPark·2020년 10월 20일
0

Javascript

목록 보기
13/26
Object.getOwnPropertyDescriptor(obj, key) : 객체 프로퍼티에 관한 정보를
볼 수 있다.
Object.getOwnPropertyDescriptors(obj) : 객체에 저장된 모든 프로퍼티 정보를
볼 수 있다.
Object.defineProperty(obj,key,descriptor) : 객체 프로퍼티를 추가하고 정의
할 수 있다.
ex) Object.defineProperty(obj,'name', {
  value: 'John',
  writable: false,
  enumerable: false,
  configurable: false,
}) 
value값은 필수로 들어가야하며 나머지는 지정해주지 않으면 false이다.
writable: 현재 프로퍼티 값을 수정 가능하게 할지의 여부.
enumerable: 열거 가능 여부 false이면 for in, Object.keys()등으로 값을
얻을 수 없다.
configurable: false이면 프로퍼티 삭제,, 플래그등을 수정 불가능하게 함.
writable은 true였다면 false로는 수정 가능함. 역은 불가능.

Ojbect.defineProperties(obj, descriptors) : 여러 프로퍼티 추가
ex) Object.defineProperties(obj, {
  name: {value: 'Tom', writable: true},
  age: {value: 24, configurable: true},
})

접근자 프로퍼티 getter, setter

getter : 값을 얻으려고 할 때 실행되는 메서드
setter : 프로퍼티에 값을 할당하려고 할 때 실행되는 메서드

let user = {
	name: 'John',
  	surname: 'Smith',
  	
 	get fullname() {
    	return this.name + this.surname;
    },
  
  	set fullname(value) {
    	return [this.name, this.surname] = value.split(' ');
    },
}

console.log(user.fullname) // 'Jhon Smith'
user.fullname = 'hyo goose'
console.log(user.name, user.surname) // 'hyo goose'

fullname은 가상의 프로퍼티이다. 접근자 프로퍼티의 장점은 메서드이기 때문에
조건이나 제약을 걸어 유동적으로 값을 얻어 낼 수 있다는 것.

참고

https://ko.javascript.info/

0개의 댓글