본문 바로가기

UI개발

자바스크립트 객체지향 - Prototype

 

Prototype 객체의 원형

function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}
Super.prototype = new Ultra();

function Sub(){}
Sub.prototype = new Super();

var o = new Sub();

console.log(o.ultraProp);	// true

 

new를 붙이면 함수는 생성자가 되고 객체를 리턴한다.

var o = {}; 로 하지 않는 이유는?

객체를 만들 때 객체가 가지고 있어야하는 메소드(데이터)인 프로퍼티 값을 가지고 있어야 하기 때문에

 

function func(){}

func.prototype 		// func {}
func.protoyupe.name = "커피사탕"

var o = new func();	// o = func {name : "커피사탕"}

 

 

function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}
Super.prototype = new Ultra();

function Sub(){}
Sub.prototype = new Super();

var o = new Sub();
o.ultraProp = 1;

console.log(o.ultraProp);	// 1
function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}
Super.prototype = new Ultra();

function Sub(){}
Sub.prototype = new Super();
Sub.prototype.ultraProp = 2;

var o = new Sub();

console.log(o.ultraProp);	// 2
function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}
Super.prototype = new Ultra();

function Sub(){}
var s = new Super();
s.ultraProp = 3;
Sub.prototype = s ;

var o = new Sub();

console.log(o.ultraProp);	// 3
function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}

var t = new Ultra();
t.ultraProp = 4;
Super.prototype = t;

function Sub(){}
var s = new Super();
Sub.prototype = s ;

var o = new Sub();

console.log(o.ultraProp);	// 4
function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}

var t = new Ultra();
Super.prototype = t;

function Sub(){}
var s = new Super();
Sub.prototype = s ;

var o = new Sub();

console.log(o.ultraProp);	// true