【问题标题】:Why is the type of a dat.gui instance so long and nested?为什么 dat.gui 实例的类型如此长且嵌套?
【发布时间】:2015-05-30 12:44:02
【问题描述】:

dat.gui 似乎是一个相对简单的 javascript 库。那么到底为什么当你实例化它时,它会返回一个 dat.GUI.dat.gui.GUI.GUI 呢?

编辑:我想我在这里无法很好地解释自己。这是一个 WHY 问题——大概 dat.gui 的作者不想这样做,但出于某种原因,他们不得不疯狂地嵌套。请否决投票者提供一些批评,以便我知道我在这里做错了什么?

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

【问题讨论】:

  • 如果你真的打开dat.gui文件,你会发现它不像你问题中的小例子那么简单。
  • 香蕉,我不确定你的意思是什么,或者为什么它与问题有关。 dat.gui 是 3.6K 行,因此与 openlayers、three.js、d3、jquery 等类似的东西相比它很短。不过,当我说简单时,我的意思是它做了一件简单的事情——它在页面上放置了一个允许调整变量的小部件。为什么该小部件的类型需要如此深入地嵌套?
  • 谢谢。另外,我想解释一下近距离投票。这怎么太宽泛了?似乎很具体。我想了解这种类型中的 .dat 和 .GUI 分别代表什么。这些“过于广泛”的投票似乎是这些天来“我想结束这个,但我无法解释为什么”。
  • @foobarbecue dat.gui 重 98.5 KB,如果你往里面看,你会发现嵌套。
  • 我投票决定关闭它,因为答案只是推测性的。

标签: javascript


【解决方案1】:

类型名称并不长,而且毕竟是嵌套的——实际上它是匿名的。不寻常的编码风格与 Chrome 开发工具的怪癖相结合,使它看起来像它一样。它不会在 Firefox 中发生。

在 dat.gui.js 的 line 1532 上,创建了原型 dat.GUI,我正在使用 new dat.GUI() 进行实例化,并将其分配给 dat.gui.GUI

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

这个函数是匿名的。当 Chrome 开发工具打印已分配给变量的匿名函数的表示时,它会假装变量的名称是函数的名称,以方便调试。

由于某些已讨论但未完全解释的原因in this question,Chrome 会在您将匿名函数分配给多个对象属性的情况下连接这些函数假名:

这就是为什么

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

打印

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

在 Chrome 开发工具中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多