Prototype chain inheritance, oop

keis·2019년 12월 6일

JavaScript

목록 보기
2/8

prototype chain inheritance

프로토타입이란 의미자체가 원형,원본이란 말

자바스크립트에서 말하는 프로토타입 역시 문법적인 의미에서 벗어나지 않는다.

즉 어떠한 객체가 만들어지기 위해 그 객체의 모태가 되는 녀석을 프로토타입이라고 한다.

Java나 php에서 말하는 class가 바로 자바스크립트의 프로토타입과 동일한 의미일 것이다.

자바스크립트의 프로토타입(Prototype) 프로퍼티 란?

모든 함수 객체의 Constructor는 prototype 이란 프로퍼티를 가지고 있다.

이 prototype 프로퍼티는 객체가 생성될 당시 만들어지는 객체 자신의 원형이될 prototype 객체를 가리킨다.

즉 자신을 만든 원형이 아닌 자신을 통해 만들어질 객체들이 원형으로 사용할 객체를 말한다.

prototype object는 default로 empty Object 를 가리킨다.

자바스크립트의 프로토타입 체인(Prototype Chain)

객체의 생성 과정에서 모태가 되는 프로토타입과의 연결고리가 이어져 상속관계를 통하여

상위 프로토타입으로 연속해서 이어지는 관계를 프로토타입 체인이라고 한다.

이 연결은 proto 를 따라 올라가게 된다.

var A = function () { };
A.prototype.x = function () {
     console.log('hello');
};
var B = new A();
var C = new A();
 
B.x();
> hello
 
C.x();
> hello
 
A.prototype.x = function () {
     console.log('world');
};
 
B.x();
> world
 
C.x();
> world

위 예제에서 A의 Prototype Object의 x 메소드를 재정의 하였을 때 B,C객체도 그 영향을 받는다는 것을 알 수 있다. 그 이유는 프로토타입 체인에 의한 공유 때문이다.

Using Object Oriented Javascript

Object 객체를 이용한 커스텀객체 생성

자바스크립트의 가장 상위개념의 객체는 (Object object)이다.
기본적으로 Object객체를 이용하여 커스텀객체 (Custom object)를 하나 생성할 수 있다.

var obj1 = new Object();
obj1.max = 10;
obj1.min = 5;

또는

var obj2 = {};
obj2.max = 20;
obj2.min = 10;

생성자함수를 이용한 커스템객체 생성

먼저 생성자함수 (Cunstructor Function)를 하나 만들고 이를 통해 커스텀객체를 하나 생성한다.

function TestObject(name) {
    this.name = name;
}
 
var obj3 = new TestObject();
var obj4 = new TestObject("hello");

obj3의 name에는 null이 들어갈 것이고, obj4의 name에는 hello가 들어갈 것이다.

0개의 댓글