我正在为我正在构建的许多应用程序设计一个 OOP 继承模式。Javascript 有很多方法可以做到这一点,但我偶然发现了一种我非常喜欢的模式。但是现在我正在为分离类和实例的需要而苦苦挣扎。
我有一个名为 Root 的基础对象。它有一个称为继承的主要方法。要创建您使用的新对象
var Person = Root.inherit({
name : "",
height : 0,
walk : function() {},
talk : function() {}
});
然后创建一个“实例”,你会
var sally = Person.inherit({
name : "sally",
height : "5'6"
});
sally 可以 .talk() 并且可以 walk() 并且她有一个 .name 和一个 .height 你可以用同样的方法让更多的人。
如果你想要一个构造函数,你可以使用
var Person = Root.inherit({
_construct : function() {
// do things when this object is inherited from
},
name : "",
height : 0,
walk : function() {},
talk : function() {}
});
当对象第一次在代码中定义时,它也有初始化的能力(单例使用这个)
var Person = Root.inherit({
_init : function() {
// called at runtime, NOT called if an object is inherited from me
},
name : "",
height : 0,
walk : function() {},
talk : function() {}
});
如您所见,一切都使用.inhert()。实际上没有类,也没有实例。一切都是某事的一个实例。到目前为止,我发现的唯一真正的问题是没有“类型”的概念,但是如果需要,您始终可以检查方法。此外,您不能保护“类”,因为如果开发人员意外更改或打算更改它,则可以在执行期间更改“类”。
所以我的问题是:在 javascript 中是否需要对类结构和类实例进行明确且受控的分离?将每个对象都视为实例有什么问题吗?