2

我是关闭的新手,我正在阅读教程: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);

但是该示例同时使用了它们。有人可以向我解释为什么吗?

4

1 回答 1

1

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

然而,除了定义一个Note带有成员函数的对象外makeNoteDom,notepad.js 还定义了一个实用函数makeNotes,它是tutorial.notepad命名空间的成员。通过包含goog.provide(tutorial.notepad),它表示 notepad.js 除了定义Note对象之外还提供包级别的功能。

于 2012-03-18T18:42:46.643 回答