当方法依赖于另一种方法时

时间:2011-10-01 13:37:41

标签: javascript

在JavaScript中处理以下情况的最佳方法是什么。

我有三种方法(m1m2m3),最后一种方法(m3)取决于其他两种方法的结果({{1} },m1)。

通过这种方式它可以工作,但我很想知道在这种情况下是否有更好的方法来编写代码,特别是对于将会读取代码的未来开发人员。

m2

1 个答案:

答案 0 :(得分:1)

首先,我不确定,但将this.p = 0放在O内与O.p结合使用是没有意义的。在引用实例时,您可能在this.p内表示m3

无论如何,如果你正在寻找可读性,你可以制作一些简单但惯用的函数:http://jsfiddle.net/ZvprZ/1/

var O = function () {
    this.p = 0;
}

O.prototype.makesomething = function () {
    var that = this;

    var result = when( that.m1(), that.m2() )
                .then( that.m3() );

    return result;
}

O.prototype.m1 = function () {this.p++};
O.prototype.m2 = function () {this.p++};
O.prototype.m3 = function () {return this.p};

when / then可能相当直接,因为除了使其更具可读性之外没有做任何事情:

(function(window) {
    var when, then, o;

    when = function() {
        return o; // just return the object so that you can chain with .then,
                  // the functions have been executed already before executing
                  // .when
    };

    then = function(a) {
        return a; // return the result of the first function, which has been
                  // executed already (the result is passed)
    };

    o = { when: when,
          then: then };

    window.when = when; // expose
    window.then = then;
})(window);