16

Ext.namespace()私が取り組んでいるプロジェクトで出会いました。Sencha のウェブサイト
を調べましたが、説明はあまり役に立ちませんでした。

これは彼らが言っていることです:

グローバルにならないように、変数とクラスのスコープに使用する名前空間を作成します。名前空間の最後のノードを指定すると、他のすべてのノードが暗黙的に作成されます。

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

Ext.ns('Company.data')彼らはまた、それが好ましいと述べています。

この質問が単純またはばかげているように思われる場合は申し訳ありませんが、この概念を完全に理解したいと思っています。前もって感謝します

これは私にはあまり明確ではありません:

  • JS ページの上部にある場合Ext.namespace('Company', 'Company.data')、他のすべての関数名と変数 (グローバル スコープなど) が含まれているということですか?
  • 'Company' と 'Company.data' は正確には何を表していExt.namespace('Company', 'Company.data')ますか?
  • のように新しい規約Ext.ns('Company.data')に「会社」がないのはなぜExt.namespaceですか?
  • これはどういう意味Specifying the last node of a namespace implicitly creates all other nodesですか?
  • 正確にいつこのアイデアを使用する必要がありますか?
4

2 に答える 2

24

まず、これExt.ns('Company.data')もほぼ同等です。

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

基本的に、深くネストされたオブジェクトの構造を定義するためのショートカットにすぎません。プロジェクトがこのように構成されている場合に便利です。com.company.app.data.packageJavaScript でパッケージ名 を複製する Java バックエンドを使用するプロジェクトを見てきました が、これExt.nsは便利なショートカットです。


質問への回答:

  • JS ページの上部にある場合Ext.namespace('Company', 'Company.data')、他のすべての関数名と変数 (グローバル スコープなど) が含まれているということですか?

いいえCompany.Data、 のように に追加する必要がありCompany.Data.newVal = 5;ます。

  • 'Company' と 'Company.data' は正確には何を表していExt.namespace('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 = {};

これにより、最初の「Company」が冗長である理由を簡単に確認できます。

  • これはどういう意味Specifying the last node of a namespace implicitly creates all other nodesですか?

  • 正確にいつこのアイデアを使用する必要がありますか?

以上の2点にお答えしました。

于 2013-08-09T17:36:27.897 に答える