我是非常新手的关闭, 我正在阅读教程: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);
但该示例将两者结合使用。 可能有人向我解释为什么?
答案 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还提供包级功能。