这是一个常见的编程问题,并非特定于此代码示例。
想象一下,您希望能够判断是否调用了特定方法,以便您可以根据该方法更改返回的内容。
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对象将执行该函数内的块。
答案 0 :(得分:1)
让来电者访问arguments object.
alert("caller is " + arguments.callee.caller.toString());
Callee引用正在执行的函数,在你的情况下变异。它有一个引用调用者的属性。
最好的办法是打破调试工具包(我个人更喜欢Chrome / IE)并浏览对象以查看您想要查看的信息的完整详细信息。