您正在看兩件不同的事情。
首先你有接口。實現這一點的最可接受的方式是通過鴨子打字(「如果它看起來像一隻鴨子,鴨子像鴨子那麼它是一隻鴨子」)。這意味着如果一個對象實現了接口的一組方法,那麼它就是那個接口。您可以通過定義一個接口的方法名稱來實現這一點。然後檢查一個對象是否實現了這個干涉,如果它實現了這些方法。這裏是我掀起的代碼示例:
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。它有我最喜歡的類實現。你也一定要看看「專業的Javascript設計模式」
http://www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X
這本書介紹了有關如何在JavaScript模仿OOP良好的細節。
怎麼樣的聯繫? – pc1oad1etter 2009-09-17 13:20:08