javascript - 这是做 JS OOP 的好方法吗?

标签 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");

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

提前致谢。

最佳答案

我认为这是一个非常好的方法。不要为“无继承”问题感到羞耻。大多数 OOP 与继承无关。最重要的方面是封装和多态性,您已经掌握了它们。

可以争辩(嗯,我通常争辩)只有静态语言才需要继承,你必须以某种方式告诉编译器这两种类型(类)是相关的,它们有一些共同点(共同点祖先),以便它可以允许多态性。对于动态语言,OTOH,编译器不会关心,运行时环境会在没有任何继承的情况下找到共性。

另一点:如果您在某些地方需要一些继承(在某些情况下它很棒,例如 GUI),通常您会发现您可以轻松地在您的“简单”之间进行互操作' 对象/类,以及其他更复杂和更重的。 IOW:不要试图找到一个可以满足您所有需求的框架并将其用于所有事情;而是使用您每时每刻都感觉更舒服的那个,只要它有助于解决特定问题。

关于javascript - 这是做 JS OOP 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263112/

相关文章:

javascript - Socket IO不断断开并重新连接

python - __init__ 和 __call__ 有什么区别?

隐藏但不是静态的Java方法

language-agnostic - 数据和代码有什么区别?

javascript - 使用 typescript/knockout 的 JQuery 对话框未打开

javascript - AngularJS 中的 DOM 未更新

javascript - 使用 Javascript 将 HTML 的 DocType 获取为字符串

oop - 确保表是类的对象?

java - Java 中平等的表现( instanceOf 与 isAssignableFrom )

javascript - 发送 2 个参数来 React Redux 中间件,而不是只发送一个操作