나는 당신의 모범이 당신의 생각대로 작동하지 않을까 두려워합니다. 이 부분:
this.do = function(){ /*do something*/ };
의 정의를 덮어 씁니다.
MyClass.prototype.do = function(){ /*do something else*/ };
새로 작성된 오브젝트에는 이미 "do"특성이 있으므로 프로토 타입 체인을 찾지 않습니다.
Javascript의 고전적인 상속 형태는 어색하며 파악하기가 어렵습니다. Douglas Crockfords 간단한 상속 패턴을 대신 사용하는 것이 좋습니다. 이처럼 :
function my_class(name) {
return {
name: name,
do: function () { /* do something */ }
};
}
function my_child(name) {
var me = my_class(name);
var base_do = me.do;
me.do = function () {
if (this.name === 'something'){
//do something new
} else {
base_do.call(me);
}
}
return me;
}
var o = my_child("something");
o.do(); // does something new
var u = my_child("something else");
u.do(); // uses base function
제 생각에는 자바 스크립트에서 객체, 생성자 및 상속을 처리하는 훨씬 명확한 방법입니다. Crockfords Javascript : The good parts 에서 더 많은 내용을 읽을 수 있습니다 .