jquery extend を使用して継承をシミュレートしようとしていますが、テストできる限り、オブジェクトでのみ機能します。
私が達成しようとしているのは次のとおりです。
var baseDefinition = function() {
var self = this;
self.calc1 = function() {
return "something1";
}
self.calc2 = function() {
return "something2";
}
self.myObject = {
propA = 100;
propB = 200;
};
}
var derivedDefinition = function() {
var self = this;
self.calc2 = function() {
return "something different from base";
}
self.myObject = {
propB = 400;
};
}
var instance = $.extend(true, {}, baseDefinition, derivedDefinition);
したがって、派生定義が基本定義に適用されるが、どちらの定義も「変更」されない基本定義から新しいインスタンスを作成したいと考えています。出来ますか?
私はプロトタイプを避けることを望んでいたので、基本的には上書きされたかどうかを知らずに instance.calc1 または instance.calc2 を呼び出したいと思います。
編集:
私の例では、jquery の拡張機能を使用するようになったオブジェクト プロパティを含めませんでした。どちらの答えも内部関数の「継承」を解決しますが、extend のようにオブジェクト プロパティを (明らかに) マージしません。可能な解決策として、インスタンスを作成した後、インスタンスのプロパティをループしてjqueryの拡張を適用することを考えています。これは私には効率が悪いように思えますが、別の方法についてアドバイスをいただけないでしょうか。