ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] Object.create 메소드
    공부 1/JS 2020. 10. 28. 19:47

    오늘 객체지향프로그래밍에 대해 알아보다가, 인스턴스를 생성하는 방법 중 Object.create를 이용하는 방법이 있는것을 알게되었다.

    그런데 Object.create는 뭘까? 내가 본 강의에서는

    Object.create는 특정객체를 프로토타임으로 하는 객체를 생성해주는 함수

    ㄹㅏ고 되어있는데 1도 몰으겠고,,, MDN을 가면 더더욱 총체적난국이라.. 우선 내 선에서 이해할 수 있는 부분까지만 이해해보기로 했다.

     

    내가 Object.create를 처음 접한 코드는 아래와 같다.

    var someMethods = {};                 
    someMethods.move = function(){			
    	this.position++;
    };
    
    var Car = function(position){			
    	var someInstance = Object.create(someMethods) 
    	someInstance.position = position;
        return someInstance;
    };
    
    var car1 = Car(5);
    var car2 = Car(!0);

     

    나는 사실 이 코드를 처음 봤을 때,

    var hi = {name: 'yullmoo'};
    var hello = Object.create(hi);
    
    hello.age = 9;
    
    console.log(hello)
    //결과값 {name:'yullmoo', age:9}

    이렇게 출력될 줄 알았다. 무슨말이냐면, 참조한 객체의 값을 그대로 가지고 있는 상태인줄 알았다는 뜻이다.

     

    혼자 그렇게 의아해하다가 만능치트키 콘솔을 떠올리고 바로 찍어보았다.

     

    약간 다르지 않은가!!!

    helloo.name을 찍었을 때 'yullmoo"가 나오는 것은 동일하지만 실제로 helloo객체에 키값이 담기는것이 아니다. 정말로 hii라는 객체를 prototype한 것이다!!! 

     

    너무 신기하고 재미있다 let을 이용해서 선언하는 것이 익숙해서 처음에는 let으로 시뮬레이션을 돌려봤는데 오류가 났다.

    믿었던 let에게 배신당한 기억이 많아 var를 사용해보니 성공했다 ㅎㅎ

    나는 아직도 스코프에 익숙하지않아 var와 let이 너무 어렵지만 계속 반복하면 어떻게든 되지 않겠는가 ㅎㅎ

    바꿀 수 없는 것에 매달리지 않은채로 새로운 지식과 이해되지 않은지식 전부 다 나에게 넣을 것이다......

    댓글

Designed by Tistory.