是否可以从函数中获取与this
和所有已关闭变量绑定的内容?
e.g。
function f() { console.log(this); }
let x = f.bind(7);
function g() { console.log(x); }
是否可以从7
中提取x
?
g
关闭x
。是否可以从g
?
答案 0 :(得分:9)
是否可以从
7
中提取x
?
不。 f
必须明确地为您提供检索this
的方法(例如,function f() { return this; }
)。既然没有,你就不能。
在规范术语中,您要问是否可以从函数中检索[[BoundThis]]内部插槽的值。 [[BoundThis]]仅在规范中出现三次:其中描述了bound function exotic objects,描述了[[Call]] internal operation的位置,以及process of creating them的概述位置。因此,不是在允许您检索值的操作中。
g
关闭x
。是否可以从g
获得一系列已结束的变量?
不。 :-)在拥有私人信息和公共API方面,这是一件好事。
提供这种方法需要一种方法来访问附加到g
及其所有外部词汇环境的lexical environment对象中的绑定列表。规范中没有。
没有规范的原因,其中一个或两个都无法添加,但我认为(这只是我的个人推测)TC39(决定这些事情的委员会)将是一个难以出售的在第一个和几乎不可能的第二个出售(具有大量的,负面的,实施影响)。