检测是否在对象上调用方法(javascript)

时间:2014-07-24 18:18:01

标签: javascript methods return conditional

这是一个常见的编程问题,并非特定于此代码示例。

如何从函数中检测是否调用了特定方法?

想象一下,您希望能够判断是否调用了特定方法,以便您可以根据该方法更改返回的内容。

var turtle = function() {
    var vars = {
        name: "Shelly",
        age: 103
    };

    this.actions = function() {
        var methods = {
            crawl: function() {
                //etc...
            },
            mutate: function() {
                //etc...
            },
            eat: function() {
                //etc...
            }
        };

      if (methodWasCalled) { // <- The part I don't know how to do
          return methods;
      } else {
          return this;
      }

    };
    if (methodWasCalled) { // <- The part I don't know how to do
        return vars;
    } else {
        return this;
    }
};

基于上面的示例,有人可以使用:turtle()并访问'vars'对象,或者他们可以使用:turtle().mutate()并且turtle对象将执行该函数内的块。

1 个答案:

答案 0 :(得分:1)

让来电者访问arguments object.

alert("caller is " + arguments.callee.caller.toString());

Callee引用正在执行的函数,在你的情况下变异。它有一个引用调用者的属性。

最好的办法是打破调试工具包(我个人更喜欢Chrome / IE)并浏览对象以查看您想要查看的信息的完整详细信息。