我试图在一点上理解ECMAScript 2015规范:对象的内部插槽.但这部分对我来说显得很不清楚,特别是这句话:
内部插槽对应于与对象关联并由各种ECMAScript规范算法使用的内部状态.
(它使用正确的语法吗?)有人能用英语解释这个概念吗?
到目前为止我能理解的是:
undefined我正在阅读Javascript Ninja 的秘密,并试图找出函数的闭包变量的存储位置。[[Environment]]函数标识符上可用的属性:
每当创建一个函数时,对创建该函数的词法环境的引用都存储在名为[[Environment]]的内部(意味着您不能直接访问或操作它)属性中(这是我们将要使用的符号)用于标记这些内部属性)。在我们的例子中,skulk 函数将保留对全局环境的引用,以及对 skulk 环境的报告函数。
我在我的函数上看到的只是[[Scopes]],它包含闭包作用域:
我有两个问题:
[[Environment]]一个 Node.js 的东西,相当于[[Scopes]]前端吗?https://danmartensen.svbtle.com/the-anatomy-of-a-javascript-function#creating-function-instances_3
我试图理解这篇关于如何创建javascript函数对象的文章.它说:
The new instance object is implicitly assigned many internal properties, one being the [[prototype]] property. The Function constructor’s prototype property referencing it’s prototype object is copied into this new object’s [[prototype]] property
基于上面的陈述我写了这段代码:
function Person(){
}
console.dir(Function.prototype);
console.dir(Person.prototype);
Run Code Online (Sandbox Code Playgroud)
根据语句将Function.prototype分配给新创建的函数对象的prototpe(在本例中为Person.prototype).我打印了他们两个.内容看起来不同.
有人可以解释我的理解错误的地方.顺便说一下,我也看了一下Ecmascript的规格,它也有同样的说法