开发者问题收集

window.__context 起什么作用?

2020-12-11
433

我知道通常最好使用谷歌搜索来回答这些问题,但我似乎无法在网上找到它。我编写了一个函数来创建 GlowScript 画布并将其添加到输入的 div。我根据网站上提供的代码进行了一些更改。这是函数(它不会在这里运行,因为您需要导入库,但它确实会创建一个 3D 形状并将其放在 div 中):

make_box("my_div")
function make_box(my_div){
    window.__context = {glowscript_container: document.getElementById(my_div)}
    var scene = canvas();

    // create some shapes:
    box( {pos:vec(.25,-1.4,0), size:vec(4.8,.3,2.5), color:color.red} )  
}

我认为第一行是将画布添加到 div 所必需的。如果没有这一行,我会收到错误:

Uncaught TypeError:无法设置未定义的属性“canvas_selected”

但是,我真的不明白它在做什么,以及窗口上下文是什么意思。有人对这一行有什么见解吗?谢谢!

2个回答

这是我通过谷歌分别搜索窗口和上下文时找到的。

显然窗口是一个对象,而 .__context 是它的一个版本。更多信息可以在下面的链接中找到。

https://www.w3schools.com/js/js_window.asp

https://towardsdatascience.com/javascript-context-this-keyword-9a78a19d5786

Dan.db
2020-12-11

window 是一个全局对象,可由给定页面中的所有脚本访问。因此,您必须小心使用它,不要将其用于各种内容,因为这样您的脚本将开始相互绊倒,从而导致奇怪的错误和潜在的安全漏洞。

在 javascript 的狂野西部,人们一直使用全局变量,但这很糟糕,并且开发了避免这种情况的技术。这是一种这样的技术,但可能不是最好的,因为它仍然可以全局访问。因此,您不必创建一大堆全局变量,而是创建一个变量(在本例中为 __context),并将其用作所有全局内容的包。前面的“__”表示它应该是私有的,但这只是一个提示,它不会以任何方式强制执行。

Uncaught TypeError: Cannot set property ‘canvas_selected’ of undefined

您看到的错误消息来自代码中的其他地方,代码正在尝试将某些东西放入包中。但是包不在那里,它是 未定义

MichaelRom
2023-06-27