반응형
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
반응형
'JavaScript' 카테고리의 다른 글
[Node.js] ReferenceError: primordials is not defined (0) | 2021.02.09 |
---|---|
[JavaScript] setTimeout의 delay는 음수도 가능할까? (0) | 2021.01.21 |
[JavaScript] Function.prototype.call/apply/bind (0) | 2021.01.20 |
div height 100% 높이 구하기 (0) | 2021.01.11 |
[ES6 JavaScript] WeakSet (0) | 2020.10.15 |