[英]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.