这是一个做JS OOP的好方法吗?

fph*_*ipe 8 javascript oop

我想问一下以下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)

这是一个好方法吗?有什么缺点吗?我不使用继承,但它会以这种方式实现继承吗?

提前致谢.

Jav*_*ier 6

我认为这是一个非常好的方法.不要为"无遗产"问题感到羞耻.大多数OOP不是关于继承.最重要的方面是封装和多态,你已经得到了它们.

可以说(好吧,我通常认为)继承只需要静态语言,你必须以某种方式告诉编译器这两种类型(类)是相关的,它们有共同点(共同的祖先)所以它可以允许多态性.使用动态语言OTOH,编译器不关心,运行时环境将找到没有任何继承的共性.

另一点:如果你在某些地方需要一些继承(在某些情况下它很好,例如GUI),通常你会发现你可以轻松地在你的"简单"对象/类和其他更复杂的对象之间进行互操作.重.IOW:不要试图找到满足您所有需求的框架并将其用于一切; 相反,只要它有助于解决具体问题,就可以使用你在每个时刻都更舒服的那个.