为什么dat.gui实例的类型如此长且嵌套?

时间:2015-05-30 12:44:02

标签: javascript

dat.gui似乎是一个相对简单的JavaScript库。那么为什么在实例化时,它会返回一个dat.GUI.dat.gui.GUI.GUI?

instantiating dat.gui

编辑:我想我在这里没有很好地解释自己。这是一个为什么问题 - 大概是dat.gui的作者不想这样做,但由于某种原因,他们不得不像疯了一样窝。那些贬低者请提出一些批评,以便我知道我在这里做错了什么?

编辑,仍然试图解释自己:我想要一个答案,将其置于javascript风格和约定的上下文中。这只是糟糕的代码吗?基于原型的语言是否会导致额外的类型嵌套? dat.gui的设计是否比我意识到的要多得多,并且实际上是用于dat.GUI.dat.gui?

1 个答案:

答案 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会将这些函数假名连接起来:

enter image description here

这就是

的原因

dat.GUI = dat.gui.GUI = (function ...

打印

function dat.GUI.dat.gui.GUI()

Chrome开发工具中的