V8 / JS运行时:如何在没有前缀的情况下提供JavaScript窗口函数" window"

时间:2015-09-30 22:51:16

标签: javascript node.js oop v8 prototypal-inheritance

我对JS控制台了解不多,但我正在进入命令行编程,在开始在外部使用shell / node之前了解我的原生环境会很好

我的猜测是所有命令行语句都被调用with (window) eval(/* whatever user typed before hitting enter/*)但这似乎是一种可怕的做法。上下文肯定被绑定为" Window"如果我console.log(this),但我不确定为什么/如何

它几乎像用户cd进入窗口对象以将其设置为上下文

1 个答案:

答案 0 :(得分:2)

所有JavaScript都具有全局范围。在浏览器中,全局范围称为“窗口”,它是对窗口对象的引用。在节点中,它被称为“全局”,指的是节点中的全局JS命名空间。

浏览器中的“窗口”全局包含许多属性。像“控制台”或“位置”之类的东西。当您想要与这些代码进行通信时,您可以选择在前面添加“window”前缀。示例:要将某些内容记录到控制台,您可以键入:

window.console.log("HELLO");

或者你可以离开“窗口”。离开电话,就像这样:

console.log("HELLO");

浏览器中的全局“窗口”对象是页面上唯一的可选对象。每当您看到对未使用“var”(或ES6中的“let”和“const”)声明的变量的引用时,这意味着该变量只是全局对象上的属性。