如何知道被调用的方法是否是最后一个

时间:2015-10-12 09:46:38

标签: javascript

拥有这样的对象:

var foo = {
    a: function () {
       /*
          if (lastCall) {
             return this.b();
          }
        */
       ...
       return this;
    }
  , b: function () { return ...; }
};

如果当前a来电是最后一次,我怎么知道a方法的

foo.a().a().a().a()
//              ^- This should return another value
//                 while the other calls return `this`

我知道我可以在最后一次调用中使用布尔值,但如果可能的话,我想避免这种情况。

那么,是否可以检查当前调用是否是堆栈中的最后一个?

1 个答案:

答案 0 :(得分:1)

当您在a时,尚未调用下一个a。所以你不可能知道在此之后会有另一个a的电话。

您可以使用Error这样的对象获取堆栈:

var stack = new Error().stack;

但是筹码不会帮助你。对a的下一次调用不在堆栈中。

我很确定如果没有foo.a().a().b();foo.a().a().a(true);等语法更改,您就无法执行此操作。