您正在看两件不同的事情。
首先你有接口。实现这一点的最可接受的方式是通过鸭子打字(“如果它看起来像一只鸭子,鸭子像鸭子那么它是一只鸭子”)。这意味着如果一个对象实现了接口的一组方法,那么它就是那个接口。您可以通过定义一个接口的方法名称来实现这一点。然后检查一个对象是否实现了这个干涉,如果它实现了这些方法。这里是我掀起的代码示例:
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