javascript - 什么是 Ext.namespace,我们应该如何使用它们?

标签 javascript extjs namespaces extjs4.2

我在我正在处理的项目中遇到了 Ext.namespace()
我查看了 Sencha's website 并且解释不是很有帮助。

他们是这样说的:

Creates namespaces to be used for scoping variables and classes so that they are not global. Specifying the last node of a namespace implicitly creates all other nodes.

Ext.namespace('Company', 'Company.data');

他们还提到 Ext.ns('Company.data') 更可取。

如果这个问题看起来简单或愚蠢,我深表歉意,但我真的很想完全理解这个概念。提前致谢

这是我不太清楚的:

  • 如果我的 JS 页面顶部有 Ext.namespace('Company', 'Company.data'),这是否意味着它包含所有其他函数名称和变量(如全局范围)?
  • Ext.namespace('Company', 'Company.data') 中的“Company”和“Company.data”究竟代表什么?
  • 为什么新约定 Ext.ns('Company.data') 没有像 Ext.namespace 中那样的“Company”?
  • 这是什么意思指定命名空间的最后一个节点隐式创建所有其他节点
  • 什么时候应该使用这个想法?

最佳答案

首先,这也是 Ext.ns('Company.data') 大致等效的:

if (!Company) var Company = {};
if (!Company.Data) Company.Data = {};

基本上,它只是定义深层嵌套结构的快捷方式 的对象。如果您的项目以这种方式构建,这将很有用;我见过 具有 Java 后端的项目复制了 com.company.app.data.package JavaScript 中的包名称,其中 Ext.ns 是一个不错的快捷方式。


逐点解决您的问题:

  • If I have Ext.namespace('Company', 'Company.data') at the top of my JS page, does this mean that it carries all the other function name and variables (like a global scope)?

没有。您必须添加到 Company.Data,例如 Company.Data.newVal = 5;

  • What exactly 'Company' and 'Company.data' stand for in Ext.namespace('Company', 'Company.data')?

它们是您根据项目惯例选择的名称。

  • Why new convention Ext.ns('Company.data') does not have 'Company' like in Ext.namespace?

因为隐含了“公司”。也就是说,Ext.ns('公司', 'Company.data') 就像:

if (!Company) var Company = {};
if (!Company) var Company = {};
if (!Company.Data) Company.Data = {};

这更容易理解为什么第一个“公司”是多余的。

  • What does this mean Specifying the last node of a namespace implicitly creates all other nodes?

  • When exactly this idea should be used?

这两个我都回答过了。

关于javascript - 什么是 Ext.namespace,我们应该如何使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152188/

相关文章:

javascript - 如何在 SAILS JS 的 API REST 中使用方法过滤器搜索?

javascript - ExtJs - 带有动态可关闭标签的文本字段

javascript - 如何在 JavaScript 中读取 HTTP GET 变量?

javascript - 使用 mustache 时在 Couchapp 列表中超时

extjs - 如何在 ExtJS 网格中隐藏整个 Ext.selection.CheckboxModel

ruby-on-rails - rails : Dividing up a single database between multiple subdomains

c - C 中的非 ASCII 字符

C++ 命名空间和类

javascript - 莫布克斯 : Is there a way to find whether a form isDirty using a mobx Utility

javascript - 在 ExtJs 树中搜索节点