javascript window.__context是什么?

wmomyfyw  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(174)

我知道通常用谷歌搜索来回答这些问题会更好,但我似乎在网上找不到。我写了一个函数来创建一个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: Cannot set property ‘canvas_selected’ of undefined
然而,我并不真正理解它在做什么,以及窗口上下文的含义。有没有人对这条线有什么看法?谢谢!

mu0hgdu0

mu0hgdu01#

这是我通过google分别搜索window和context时发现的。
显然,window是一个对象,.__context是它的一个版本。更多信息可以在下面的链接中找到。
https://www.w3schools.com/js/js_window.asp
https://towardsdatascience.com/javascript-context-this-keyword-9a78a19d5786

6rqinv9w

6rqinv9w2#

window是一个全局对象,可以被给定页面中的所有脚本访问。正因为如此,你必须小心使用它,不要把它用于各种各样的东西,因为这样你的脚本就会开始互相绊倒,导致奇怪的bug和潜在的安全漏洞。
在JavaScript的狂野西部,人们一直在使用全局变量,但这是不好的,并开发了技术来避免它。这是一种这样的技术,但也许不是最好的,因为它仍然是全球可访问的。因此,与其创建一大堆全局变量,不如创建一个变量,在本例中为__context,并将其用作所有全局内容的包。前面的“__”表示它应该是私有的,但这只是一个提示,它没有以任何方式强制执行。
未捕获的类型错误:无法将属性“canvas_selected”设置为undefined
您看到的错误消息来自代码中的其他地方,代码试图将某些东西放入包中。但包不在那里,它是undefined

相关问题