相关疑难解决方法(0)

什么是 Javascript [[环境]] 属性?

我正在阅读Javascript Ninja 的秘密,并试图找出函数的闭包变量的存储位置。[[Environment]]函数标识符上可用的属性:

每当创建一个函数时,对创建该函数的词法环境的引用都存储在名为[[Environment]]的内部(意味着您不能直接访问或操作它)属性中(这是我们将要使用的符号)用于标记这些内部属性)。在我们的例子中,skulk 函数将保留对全局环境的引用,以及对 skulk 环境的报告函数。

我在我的函数上看到的只是[[Scopes]],它包含闭包作用域:

| 在此处输入图片说明

我有两个问题:

  1. [[Environment]]一个 Node.js 的东西,相当于[[Scopes]]前端吗?
  2. 这是检查函数的任何闭包数据的最佳位置吗?

javascript closures

6
推荐指数
1
解决办法
1498
查看次数

为什么Object.prototype.toString.call(foo)可以检测foo的类型?

我知道我们可以在Javascript中检测变量的类型,如下所示:

Object.prototype.toString.call([]); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(''); // [object String]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call(1); // [object Number]
Object.prototype.toString.call(function () {}); // [object Function]
Object.prototype.toString.call(/test/i); // [object RegExp]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(null); // [object Null]
Object.prototype.toString.call(); // [object Undefined]
Run Code Online (Sandbox Code Playgroud)

但为什么?

这些值([object Array],[object String] ...)是如何返回的,以及它的作用Object.prototype.toString是什么?

javascript

3
推荐指数
1
解决办法
833
查看次数

标签 统计

javascript ×2

closures ×1