1

如果它是从另一个函数甚至框架调用的,我如何访问调用者上下文?示例 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>

我可以在不直接将其传递给 someFunction 的情况下获取调用函数的 Window 对象吗?我可以有多个 iframe,它们都会调用 someFunction。

4

1 回答 1

2

一般可以吗?

您可以获得对调用者函数的引用,但永远不能在该函数之外访问其局部变量。

我可以在不直接将其传递给 someFunction 的情况下获取调用函数的 Window 对象吗?

window不。函数对象与定义函数的环境对象之间没有暴露关系。window对象是函数作用域链的一部分,但您不能访问作用域链。


明确地说,将函数需要知道的任何内容传递给函数(依赖注入)。它还使您的功能更易于测试。

于 2013-02-21T10:36:59.330 回答