在封闭库中使用提供

时间:2012-03-17 16:06:20

标签: namespaces google-closure-library

我是非常新手的关闭, 我正在阅读教程:https://developers.google.com/closure/library/docs/tutorial 它说那个

goog.provide('tutorial.notepad.Note');

相当于

tutorial = tutorial || {};
tutorial.notepad = tutorial.notepad || {};
tutorial.notepad.Note = tutorial.notepad.Note || {};

基于这个事实,我假设如果使用goog.provide('tutorial.notepad.Note');

然后无需使用goog.provide('tutorial.notepad);

但该示例将两者结合使用。 可能有人向我解释为什么?

1 个答案:

答案 0 :(得分:1)

goog.provide(namespace)将从左侧开始检查每个以点分隔的名称,并创建一个指向与上面提供的tutorial摘录等效的新对象文字的属性。因此,从goog.provide('tutorial.notepad')开始,notepad.js在技术上不需要包含goog.provide('tutorial.notepad.Note'),这是正确的,因为tutorial.notepad将确保对象链Note存在。

但是,除了使用成员函数makeNoteDom定义makeNotes对象之外,notepad.js还定义了一个效用函数tutorial.notepad,它是goog.provide(tutorial.notepad)的成员。命名空间。通过包含Note,它表示除定义{{1}}对象外,notepad.js还提供包级功能。