ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [객체지향프로그래밍] 자바스크립트에서 인스턴스를 만드는 방법
    공부 1/기타 2020. 10. 28. 19:30

    인스턴스를 만드는 방법에 대해 알아보았다.

    사실 이걸 그냥 줄글로 주루룩 읽을 때는 예..?ㅇㅅaㅇ ㅇㅅㅇr' 하면서 잘 이해가 안갔는데 확실히 코드도 적어보고, 콘솔에도 찍어보고 하니까 이해가 되었다. 역시 백문이 불여일견~!~!~!~!~!

     

     

    1. Functional Instantiation

    함수를 이용해서 찍어내는 방식

     

    var Car = function(){                //함수선언
    	var someInstance = {};           //객체생성
        someInstance.position = 0;       //객체의 포지션할당
        someInstance.move = function(){  //객체의 무브메소드할당
        	this.position++;
           }
         return someInstance;            //객체리턴
      };
      
      var car1 = Car();                  //Car 속성을 가지는 객체 car1 생성
      var car2 = Car();                  //Car 속성을 가지는 객체 car2 생성
      car1.move();                       //car1의 포지션을 변경하는 move메소드 함수실행
      //car1.position --> 1 // car2.position -->0

    2. Functional Shared

    잘은 모르겠지만, 객체를 합쳐주는...?것같다. 이 방법을 사용하면 새로운 Object를 만들때마다 그 안에 인스턴스?(메소드 등)를 선언할 필요가 없다. 왜냐면 someMethods키를 가져오니까!!

    var extend = function(to, from){    //객체를 합치는 함수 (같은 속성,메소드를 갖게하는 함수)extend 생성
    	for(var key in from){           //from 객체에 있는 key들을 순회하며 to객체에 넣는다.
        	to[key] = from[key];
           }
        };
        
    var someMethods = {};               //메소드 담을 빈객체
    somMethods.move = function(){       //객체에 메소드 담기
    	this.position++;
     };
     
    var Car = function(position){       //car함수 선언
    	var someInstance = {            //속성담을 객체 생성
        	position: position,
            };
        extend(someInstance, someMethods); //someMethod에 있는 메소드들을 someInstance에 넣기
        return someInstance;
     };
     
     var car1 = Car(5);
     var car2 = Car(10);
     

    3. Prototypal

    Object.create 함수를 이용히여 . . Object를 생성하는것..

    여기서 잠깐~~~!!! Object.create란??? --->> 여기로!

    var someMethods = {};                   //메소드 담을 빈객체
    someMethods.move = function(){			//빈 객체 담기
    	this.position++;
    };
    
    var Car = function(position){			//함수 생성
    	var someInstance = Object.create(someMethods) //someMethods를 prototype으로 하는 객체
    	someInstance.position = position;
        return someInstance;
    };
    
    var car1 = Car(5);
    var car2 = Car(!0);

     

    4.Pseudoclassical

    prototype을 이용해 메소드를 짝지어주는 방식이다. 아래 코드를 보면 알겠지만 짱간단해진다!

     

    var Car = function(position){		//Car함수 선언
    	this.position = position;
    }
    
    Car.prototype.move = function(){	//Car 함수에 move 메소드선언
    	this.position++;
    }
    
    var car1 = new Car(5);				//새로운 인스턴스만들때 new 키워드 필수!
    var car2 = new Car(10);

     

    너무 재미있다 흑흑 이론공부 이렇게 재미있는데 코드짜라면 왜이렇게 힘드니?

    아! Class에 대한내용은 이전에 작성한 객체지향프로그래밍 포스트에 작성되어있다 (불친절)

     

    '공부 1 > 기타' 카테고리의 다른 글

    nodemon 사용하기  (0) 2020.11.26
    [React] react에서의 조건문/조건부렌더링  (0) 2020.11.20
    [객체지향프로그래밍] OOP란  (0) 2020.10.28
    <HTML> 태그 공부  (0) 2020.09.21
    <HTML> 링크 새탭으로 뜨게하기  (0) 2020.09.21

    댓글

Designed by Tistory.