繁体   English   中英

在JavaScript中更改函数上下文(用于访问本地变量)

[英]Change the function context in JavaScript (for access local variables)

是否可以在另一个上下文中运行一个函数,它可以使用此上下文访问局部变量?

我做了这个概念证明:

var t = (function()
{
    "use strict";
    var ab = 5;

    var f = (function(t)
    {
        return function(c){ c.call(t); }
    })(t);

    return f;

})();

t(function()
{
    return ab;
});

这给了我这个错误:ReferenceError:ab没有定义

有没有办法我传递给t的匿名函数可以访问局部变量ab

不幸的是(或者幸运的是)你不能这样做。 这里出现的问题是你不能从函数(上下文)“传递”这样的被叫激活对象 Function.prototype.apply.call只能提供从任何常规Javascript对象设置函数上下文的选项,但formal parameter, function declarations and variables不存储在任何“常规”对象中。 这些值保存在下面的Scope链中 ,并存储在您无法直接从Javascript访问的所谓的Activation Object (或Lexical Environment Record )中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM