JavaScript

[JavaScript/Pseudoclassical/ES5] Subclass method에서 Superclass Method 호출하기(오버라이딩 메서드 호출)

코딩하는 Jay 2021. 1. 20. 18:53
반응형

Pixabay 로부터 입수된  naobim 님의 이미지 입니다.

 

var SuperClass = function() {
	this.name = 'super';
};
SuperClass.prototype.print = function() {
	console.log('[SUPER] ' + this.name);
};


var SubClass = function() {
	this.name = 'sub';
};
SubClass.prototype = new SuperClass();

SubClass.prototype.print = function() {
	console.log('[SUB] ' + this.name);
	// I want to call super's print method!
};

var obj = new SubClass();
obj.print();

 SuperClass와 SubClass가 위와 같은 구조로 있다고 가정하겠습니다. SubClass가 정의될 때, print 메서드를 오버라이딩해서 odj.print()를 호출하면 SubClass의 print 메서드만 호출됩니다. 그런데, SubClass print 메서드 내에서 마지막에 SuperClass의 print 메서드를 실행하고 싶다면 어떻게 해야할까요?

 

아래와 같이 호출하면 SuperClass의 오버라이딩된 메서드를 호출할 수 있습니다.

Object.getPrototypeOf(SubClass.prototype).print.call(this);

 

소스를 정리하면 아래와 같습니다.

var SuperClass = function() {
	this.name = 'super';
};
SuperClass.prototype.print = function() {
	console.log('[SUPER] ' + this.name);
};


var SubClass = function() {
	this.name = 'sub';
};
SubClass.prototype = new SuperClass();

SubClass.prototype.print = function() {
	console.log('[SUB] ' + this.name);
	Object.getPrototypeOf(SubClass.prototype).print.call(this);
};

var obj = new SubClass();
obj.print();

 

 

참고: 

stackoverflow.com/questions/23077569/proper-way-to-call-superclass-functions-from-subclass

 

Proper way to call superclass functions from subclass

I have a "SuperClass" with "info" as an instance variable. "SuperClass" has function "printInfo()". "printInfo()" needs to access instance variable "info". I want to create a "SubClass" which also...

stackoverflow.com

 

반응형