dat.gui似乎是一个相对简单的JavaScript库。那么为什么在实例化时,它会返回一个dat.GUI.dat.gui.GUI.GUI?
编辑:我想我在这里没有很好地解释自己。这是一个为什么问题 - 大概是dat.gui的作者不想这样做,但由于某种原因,他们不得不像疯了一样窝。那些贬低者请提出一些批评,以便我知道我在这里做错了什么?
编辑,仍然试图解释自己:我想要一个答案,将其置于javascript风格和约定的上下文中。这只是糟糕的代码吗?基于原型的语言是否会导致额外的类型嵌套? dat.gui的设计是否比我意识到的要多得多,并且实际上是用于dat.GUI.dat.gui?
答案 0 :(得分:0)
类型名称不长并且毕竟是嵌套的 - 实际上它是匿名的。不同寻常的编码风格与Chrome Dev Tools的怪癖相结合,使其看起来像它一样。它并不会发生在Firefox中。
在dat {gui.js的line 1532上,创建了我dat.GUI
实例化的原型new dat.GUI()
,并将其分配给dat.gui.GUI
:
dat.GUI = dat.gui.GUI = (function
...
此功能是匿名的。当Chrome Dev Tools打印已分配给变量的匿名函数的表示时,它会假装变量的名称是函数的名称,以便于调试。
由于某些原因已经讨论但未完全解释in this question,在您将匿名函数分配给多个对象属性的情况下,Chrome会将这些函数假名连接起来:
这就是
的原因 dat.GUI = dat.gui.GUI = (function
...
打印
function dat.GUI.dat.gui.GUI()
。