あなたは2つの異なるものを見ています。
まず、インターフェースがあります。これを実装する最も受け入れられている方法は、ダックタイピング (「アヒルのように見え、アヒルのように鳴く場合、それはアヒルです」) です。これは、オブジェクトがインターフェイスのメソッドのセットを実装する場合、それがそのインターフェイスであることを意味します。これを実装するには、インターフェイスを定義するメソッド名の配列を用意します。次に、オブジェクトがそのインターフェイスを実装しているかどうかを確認するには、それらのメソッドを実装しているかどうかを確認します。これが私が作成したコード例です。
function Implements(obj, inter)
{
var len = inter.length, i = 0;
for (; i < len; ++i)
{
if (!obj[inter[i]])
return false;
}
return true;
}
var IUser = ["LoadUser", "SaveUser"];
var user = {
LoadUser : function()
{
alert("Load");
},
SaveUser : function()
{
alert("Save");
}
};
var notUser = {
LoadUser : function()
{
alert("Load");
}
};
alert(Implements(user, IUser));
alert(Implements(notUser, IUser));
これで継承ができました。JS には継承が組み込まれていません。したがって、手動で実装する必要があります。これは、あるオブジェクトのプロパティを別のオブジェクトに「コピー」するだけです。別のコード サンプルを次に示します (完全ではありませんが、要点を示しています)。
function InheritObject(base, obj)
{
for (name in base)
{
if (!obj[name])
obj[name] = base[name];
}
}
var Base = {
BaseFunc : function() { alert("BaseFunc from base"); },
InheritFunc : function() { alert("InheritFunc from base"); }
}
var Inherit = {
InheritFunc : function() { alert("InheritFunc from inherit"); },
AnotherFunc : function() { alert("AnotherFunc from inherit"); }
}
InheritObject(Base, Inherit);
Inherit.InheritFunc();
Inherit.BaseFunc();
Inherit.AnotherFunc();
Base.BaseFunc();
Base.InheritFunc();
おそらくhttp://www.mootools.netを見たいと思うでしょう。クラスの私のお気に入りの実装があります。「Pro Javascript Design Patterns」もぜひチェックしてください。
http://www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X
この本は、JavaScript で OOP をエミュレートする方法について詳しく説明しています。