我想问一下以下OOP风格的优点.我用以下方式编写JS类.
var MyClass = function() {
// private vars
var self = this,
_foo = 1,
_bar = "test";
// public vars
this.cool = true;
// private methods
var initialize = function(a, b) {
// initialize everything
};
var doSomething = function() {
var test = 34;
_foo = cool;
};
// public methods
this.startRequest = function() {
};
// call the constructor
initialize.apply(this, arguments);
};
var instance_1 = new MyClass();
var instance_2 = new MyClass("just", "testing");
Run Code Online (Sandbox Code Playgroud)
这是一个好方法吗?有什么缺点吗?我不使用继承,但它会以这种方式实现继承吗?
提前致谢.
我认为这是一个非常好的方法.不要为"无遗产"问题感到羞耻.大多数OOP不是关于继承.最重要的方面是封装和多态,你已经得到了它们.
可以说(好吧,我通常认为)继承只需要静态语言,你必须以某种方式告诉编译器这两种类型(类)是相关的,它们有共同点(共同的祖先)所以它可以允许多态性.使用动态语言OTOH,编译器不关心,运行时环境将找到没有任何继承的共性.
另一点:如果你在某些地方需要一些继承(在某些情况下它很好,例如GUI),通常你会发现你可以轻松地在你的"简单"对象/类和其他更复杂的对象之间进行互操作.重.IOW:不要试图找到满足您所有需求的框架并将其用于一切; 相反,只要它有助于解决具体问题,就可以使用你在每个时刻都更舒服的那个.