2

最近我一直在阅读有关 javascript 模式的内容,以及如何使用模块模式来避免全局变量。当我查看 d3.js层次结构布局源代码时,我不确定以下是否是故意的。

d3.layout.hierarchy正在使用模块模式,但到最后,我看到了它之外的许多方法,我猜这些方法仅适用于布局及其派生对象(分区、树..)。

d3_layout_hierarchyRebind
d3_layout_hierarchyChildren
d3_layout_hierarchyValue
..

这是故意的,还是应该在模块中捕获?

4

1 回答 1

5

当通过makefile构建库时,这些方法都包含在包装代码的匿名函数中(参见start.jsend.js)。所以它们在最终的内置库中都不是全局的。这是一种设计选择,允许将库轻松拆分为多个文件,而无需为每个文件使用匿名函数包装器(就像require.js样式的模块一样)。

于 2012-09-17T17:07:29.723 回答