используя обеспечение в библиотеке закрытия - PullRequest
2 голосов
/ 17 марта 2012

Я очень новичок в закрытии, я читаю учебник по адресу: 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 Ответ

1 голос
/ 18 марта 2012

goog.provide(namespace) проверит каждое разделенное точками имя, начинающееся слева, и создаст свойство, указывающее на новый литерал объекта, эквивалентный учебнику , который вы предоставили выше.Следовательно, вы правы, что notepad.js технически не требует включения 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.

...