我不禁注意到JS对象和词法环境(如here)之间的相似之处。两者都是名称/值对的容器。两者都有到另一类事物的链接:在词法环境中是父环境,在JS对象中是原型对象。这两种链接实际上服务于相同的目的:在词法环境的情况下,在词法环境链中查找变量的值,在对象的情况下,在原型链中查找属性的值。
考虑到这种紧密的类比,有没有一种方法可以在JS程序中将词法环境作为对象引用?是否有计划在未来为该语言添加这样的功能?我确信它对某些东西是有用的..。
发布于 2018-12-14 06:56:21
类比被打破的地方有一个重要的区别:词法环境是从静态代码分析创建的,并且不会改变其形状。它们是记录,而不是动态对象。这有助于解释器/编译器优化查找,并防止它们暴露为对象。
只有两个小东西引入了动态作用域:eval和with。(后者允许将动态对象实际放入作用域链中)。正因为如此,他们都被轻视了。
https://stackoverflow.com/questions/53769549
复制相似问题