javascript 간단한 프로퍼티 속성 질문입니다.
글쓴이: guieenoutis / 작성시간: 일, 2015/08/23 - 1:12오후
var object = {}; //오브젝트에 빈 객체 할당 var value = 'Minho shipseki'; // 벨류값 할당 //오브잭트에 get&set 메소드 추가 Object.defineProperty(object,'name',{ get: function(){ // 콘솔로그 출력 후 벨류를 내뱉음 ??----------#1 console.log('i came from the getto'); return value; }, set: function(newValue){ // 함수에 넣어진 값을 이용하여 콘솔로그 출력 후 벨류는 뉴벨류로 바뀜 ??-----------#2 console.log('ADa26years : ' +newValue); value = newValue; } }); //--------------------#5 object.name = 'BlackNut'; //------#3 console.log(object.name);//--------------#4
질문)
1. #3에서 오브잭트 키에 name을,, 속성값에 BlackNut을,, 추가시킨것 뿐인데
왜 ADa26years : BlackNut이란 아웃풋이 뜨는지 궁금합니다.
set: function(newValue) 를 이용하려면 object.set(BlackNut)을 입력해야되는것 아닌가요??
근데 이렇게 위처럼 직접 입력하면 오류가납니다..ㅠ;;
2. #1과 #2의 의미가 잘 이해가 안갑니다.
3. #4에서 "i came from the getto (\n)BlackNut"이 뜨는것은,, 제가 #3에서 블렉넛을 네임 키값에 할당해주었기 때문인데
#5에서 console.log(object.name); 을 입력시,, 블랙넛이 아닌 '민호십세키'가 뜨는데
이말은 곧, 네임 키값에 '민호십세키'가 할당되었기 때문인가요??
도와주실분 있나요?
자바 시작한지 얼마 안되어서 잘 이해가 안가네요.
질문이 조잡하여 죄송합니다.
머리가 너무 뒤죽박죽이네요..
Forums:
Object.defineProperty()로 인해
Object.defineProperty()로 인해 object에 name이라는 항목을 추가되고, name을 읽으려고 할 때 get 함수가 실행되며, name을 쓸려고 할 때 set 함수가 실행됩니다.
#4가 name을 읽으려고 시도하는 행위이고, #3이 name을 쓸려고 하는 행위입니다.
#5에서 object.name을 읽으려고 시도하였고, get 함수가 실행되어 line 2에 정의된
value를 리턴해주고, 이 리턴 값이 콘솔에 출력되는 겁니다.
#3에서는 name값을 쓰려고 시도했고, set 함수고 실행되어 콘솔에 ADa... 가 출력되고, line 2에 있는 value 변수가 'BlackNut'이 됩니다.
#4에서는 다시 get 함수가 실행됩니다. #3에서 value의 값이 바뀌었으므로, 바뀐 값이 콘솔에 출력됩니다.
또한, 위의 코드에서 object.set은 정의되지 않았습니다. set 항목을 정의하고 싶으면
object.set = function(newValue) { … };
이런 식으로 하면 됩니다.
아 진짜 감사드립니다 ㅠㅠ
명쾌하게 이해가 잘 되었어요!!
저도 지식 많이 쌓이면 꼭 되갚겠습니다.
댓글 달기