拥有这样的对象:
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`
我知道我可以在最后一次调用中使用布尔值,但如果可能的话,我想避免这种情况。
那么,是否可以检查当前调用是否是堆栈中的最后一个?
答案 0 :(得分:1)
当您在a
时,尚未调用下一个a
。所以你不可能知道在此之后会有另一个a
的电话。
您可以使用Error
这样的对象获取堆栈:
var stack = new Error().stack;
但是筹码不会帮助你。对a
的下一次调用不在堆栈中。
我很确定如果没有foo.a().a().b();
或foo.a().a().a(true);
等语法更改,您就无法执行此操作。