
강좌 & 팁
안녕하세요. 송기석입니다.
자바스크립트에서 가능한 상속 패턴들은 매우 다양합니다.
오늘은 상속패턴 중에 의사 클래스 방식의 상속에 대하여 이야기 해보겠습니다.
의사 클래스 방식의 상속
자바스크립트는의 프로토타입 메커니즘은 클래스와 비슷하게 보이는 일부 복잡한 구문
때문에 명확히 두드러지질 않습니다. 프로토타입은 객체에서 다른 객체로 직접 상속하는 방법대신 생성자
함수를 통해 객체를 생성하는 것 같은 불필요한 간접적인 단계가 있습니다.
다음과 같이 생성자를 정의하고 prototype에
메소드를 추가할 수 있습니다.
var test =
function(name) {
this.name = name
};
test.prototype.get_name
= function() {
return this.name;
};
test.prototype.says =
function() {
return this.saying || '';
};
그리고 나서 다음과 같이 인스턴스를 생성합니다.
var mytest = new
test('test name');
var name =
mytest.get_name();
console.log(name); //
test name
이제 생성자 함수를 정의하고 이 함수의 prototype을
test인스턴스로 대체하게 하는 방식으로 또 다른 의사 클래스를 만들 수 있습니다.
var cat = function()
{
this.name = name;
this.saying = 'meow';
};
cat.prototype = new
test();
cat.prototype.purr =
function(n) {
var i, s = '';
for(i = 0; i < n; i += 1) {
if (s) {
s += '-';
}
s += 'r';
}
return s;
};
cat.prototype.get_name
= function () {
return this.says() + ' ' + this.name + ' ' +
this.says();
};
var mycat = new
cat('Henrietta');
var says =
mycat.says();
var purr =
mycat.purr(5);
var name =
mycat.get_name();
console.log(says); // meow
console.log(purr); // r-r-r-r-r
console.log(name); // meow test name neow
다음에 계속…