是否有可能从函数中获取绑定(bind)到 this
的所有内容以及所有封闭变量?
例如
function f() { console.log(this); }
let x = f.bind(7);
function g() { console.log(x); }
是否可以从
x
中提取7
?g
在x
上关闭。是否可以从g
获取封闭变量数组?
最佳答案
Is it possible to extract that
7
fromx
?
没有。 f
必须明确地为您提供检索this
的方法(例如,function f() { return this; }
)。既然没有,你就不能。
在规范术语中,您询问是否可以从函数中检索 [[BoundThis]] 内部槽的值。 [[BoundThis]] 在规范中只出现了三次: Where bound function exotic objects被描述,他们的[[Call]] internal operation被描述,process of creating them在哪里被概述。因此,不在允许您检索值的操作中。
g
closes overx
. Is it possible to get array of closed-over variables fromg
?
没有。 :-) 就拥有私有(private)信息和公共(public) API 而言,这是一件好事。
提供这将需要一种方法来访问 lexical environment 中的绑定(bind)列表附加到 g
及其所有外部词法环境的对象。规范中没有。
没有规范不能添加其中一个或两个的原因,但我认为(这只是我个人的猜测)TC39(决定这些事情的委员会)将很难推销第一次和第二次几乎不可能卖出(这对实现产生了巨大的负面影响)。
关于javascript - 如何获得绑定(bind) `this` 和封闭变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553374/