如果从另一个函数甚至框架调用它,我如何访问调用者上下文? 示例1.一般情况下是否可能?
var aaa = function(){
(function(){console.log(ab)}).call(arguments.callee.caller); //fail
}
function bbb(){
var ab = 'fff'; //defined in this function's context
aaa();
}
示例2。
<html>
function someFunction(){
//description on bottom
}
<iframe>
function() bbb(){parent.someFunction();}
bbb();
</iframe>
</html>
我是否可以获取调用者函数的Window对象而不将其直接传递给someFunction?我可以拥有多个iframe,并且所有iframe都会调用someFunction。
答案 0 :(得分:2)
一般可以吗?
您可以获得对调用函数的引用,但是您永远不能访问该函数之外的局部变量。
我是否可以获取调用者函数的Window对象而不将其直接传递给someFunction?
没有。函数对象与定义函数的环境的window
对象之间没有公开关系。window
对象是函数作用域链的一部分,但您无法访问作用域链。 / p>
要明确,将函数需要知道的任何内容传递给函数(依赖注入)。它还使您的功能更容易测试。