namespaces - 在闭包库中使用提供

标签 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);
但是这个例子同时使用了它们。
有人可以向我解释为什么吗?

最佳答案

goog.provide(namespace)将检查从左边开始的每个点分隔的名称,并创建一个属性指向一个新的对象文字,相当于 tutorial你上面提供的摘录。因此,您是正确的 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之外,还提供了包级别的功能。目的。

关于namespaces - 在闭包库中使用提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9751499/

相关文章:

php - WSDL SoapClient 和 PHP + 自己的命名空间

javascript - 如何从 CDN goog.require JQuery?

javascript - XHR 在 Google Closure 中发布时传递此值的正确方法

yui3 - 关闭库或 YUI 3

javascript - SHA512 在 CryptoJS 和 Closure 中不一样

PHP SimpleXMLElement addAttribute 命名空间语法

ios - Swift:创建模块(命名空间)

python - 如何在 Flask 应用程序中设置 api 前缀?

python - 在加载模块之前填充模块中的命名空间