【问题标题】:What is Ext.namespace, how should we use them?什么是 Ext.namespace,我们应该如何使用它们?
【发布时间】:2013-08-11 17:02:47
【问题描述】:

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

这就是他们所说的:

创建用于范围变量和类的命名空间,以便 他们不是全球性的。指定命名空间的最后一个节点 隐式创建所有其他节点。

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 中的“公司”?
  • Specifying the last node of a namespace implicitly creates all other nodes 是什么意思?
  • 什么时候应该使用这个想法?

【问题讨论】:

    标签: javascript extjs namespaces extjs4.2


    【解决方案1】:

    Ext.namespace 只有在您想定义自己的类而不使用 Ext.define 时才真正有用。

    下面的例子需要提前创建命名空间:

    Company.data.Form = Ext.extend(...); //this is the old way of defining classes
    

    创建 ExtJS 类的标准方法是:

    Ext.define('Comany.data.Form', {...});
    

    此方法会自动为您创建命名空间。

    【讨论】:

      【解决方案2】:

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

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

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


      逐点解决您的问题:

      • 如果我的 JS 页面顶部有 Ext.namespace('Company', 'Company.data'),这是否意味着它包含所有其他函数名称和变量(如全局范围)?

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

      • Ext.namespace('Company', 'Company.data') 中的“Company”和“Company.data”究竟代表什么?

      它们是您根据项目约定选择的名称。

      • 为什么新约定Ext.ns('Company.data') 没有Ext.namespace 中的“公司”?

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

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

      这样更容易看出为什么第一个“公司”是多余的。

      • Specifying the last node of a namespace implicitly creates all other nodes 是什么意思?

      • 什么时候应该使用这个想法?

      我在上面回答了这两个。

      【讨论】:

      • 更像是:if (window["Company"] === undefined) window["Company"] = {};
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2010-11-01
      • 2021-10-02
      • 2011-09-30
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多