【发布时间】:2018-12-13 20:24:18
【问题描述】:
我不禁注意到 JS 对象和词法环境之间的类比(如解释,例如,here)。两者都是名称/值对的容器。两者都有一个指向另一个同类事物的链接:在词法环境的情况下是父环境,在 JS 对象的情况下是原型对象。这两种链接实际上服务于相同的目的:在词法环境的情况下,在词法环境链中查找变量的值,在对象的情况下,在原型链中查找属性的值。
鉴于这种密切的类比,有没有办法在 JS 程序中将词法环境作为对象引用?将来有没有计划在语言中添加这样的功能?我敢肯定它对某些东西很有用...
【问题讨论】:
-
不,ECMA-262 禁止。词法环境是描述行为的规范设备,它不必像描述的那样实际存在:“词法环境和环境记录值是纯粹的规范机制,不需要对应于 ECMAScript 实现的任何特定工件。它ECMAScript 程序不可能直接访问或操作这些值。"
-
因为 我确信它对某些东西很有用... 对于 SO 来说并不是一个真正的问题 :-)
-
with的反义词? AFAIK,最接近的是速记文字,例如var scope = {a,b,c, scope}; -
@dandavis 不,我不是这个意思。有关词法环境的说明,请参阅 mitpress.mit.edu/sites/default/files/sicp/full-text/book/…。
标签: javascript object lexical-scope