인프런 커뮤니티 질문&답변

Hyobin Kim님의 프로필 이미지
Hyobin Kim

작성한 질문수

자바스크립트 비기너: 튼튼한 기본 만들기

4. getter와 setter, get 속성, set 속성

두개의 오브젝트를 써야하는 이유

작성

·

130

1

강의 보다가 set 부분에서 의문이 들어서 실험을 해봤는데요

 

예시에서 obj = {}, data = {} 이렇게 두가지 오브젝트를 사용하셨잖아요 

저는 obj하나만 써서, Book의 get/set을 정의 할 때도, 데이터를 집어 넣고 빼고 하는 대상도 obj의 Book으로 설정을 하니까 마치 출구없는 재귀함수 처럼 스택 오버 플로우가 생기더군요

그래서 두개의 오브젝트를 써야하는 구나 싶은데 구체적인 이유를 잘 모르겠습니다

답변 1

0

let obj = {}
Object.defineProperty(obj, "book", {
	set : function(param){
		obj.title = param.toUpperCase(); // parameter를 받아 대문자로 바꿔줌
	},
	get : function(){
		return obj.title;
	}
});

obj.book = "jsbook"
console.log(obj.book); //JSBOOK

저도 이 부분이 궁금해서 실제로 코드를 작성해보았는데, 이렇게 작성해도 결과물은 잘나오더라구요. 두 오브젝트를 활용한 이유가 저도 매우 궁금합니다...

그리고 또 하나의 의문은,  data라는 새로운 오브젝트를 사용했고, defineProperty 내에 이 data의 프로퍼티 값을 작성하고나서, data의 프로퍼티를 obj의 프로퍼티로 복사하거나 옮긴적이 없는데, obj의 book property value에 JS책이 어떻게 자동적으로(?) 할당됐는지가 궁금하네요...

Hyobin Kim님의 프로필 이미지
Hyobin Kim

작성한 질문수

질문하기