-
[객체지향프로그래밍] 자바스크립트에서 인스턴스를 만드는 방법공부 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