私は次のように定義されたクラスを持っています:
function MyClass() {
}
MyClass.prototype = {
init: function() {
alert('My parent class!');
},
method1: function() {},
method2: function() {}
};
およびプロパティ オブジェクト:
{
init: function() {
MySubClass.superclass.init.apply(this, arguments);
alert('test!');
},
test: function() {
alert();
}
}
そして、小道具(オブジェクト)で基本クラス(MyClass)を拡張し、新しい拡張サブクラスを(MySubClassに)返す関数が必要です:
MySubclass = extend(MyClass, {
init: function() {
MySubClass.superclass.init.apply(this, arguments);
alert('test!');
},
test: function() {
alert();
}
});
コンストラクターは、(init からの) 新しいコンストラクターに置き換える必要があります。
正しい方法が必要です。
なぜうまくいかないのでしょうか?
extend: function(bc, o) {
// result class (apply only first constructor)
var cls = function() {};
cls.prototype = bc.prototype;
for (var k in o)
cls.prototype[k] = o[k];
cls.superclass = bc.prototype;
return cls;
}