2016-05-02 13 views
1

を非表示にするヘルパーメソッドを使用して、私はそこに、このコードの断片を見た:プログラミングプラクティス - 私は<a href="https://github.com/google/closure-library/blob/master/closure/goog/dom/dom.js" rel="nofollow">closure library</a>のコードセグメントを通して読んでいたオブジェクト

/** 
* Gets the document object being used by the dom library. 
* @return {!Document} Document object. 
*/ 
goog.dom.getDocument = function() { 
    return document; 
}; 

我々はgetterメソッドでは、ドキュメントの参照をラップしているのはなぜ?ドキュメントはグローバルオブジェクトではありませんか?

+0

テストのために模倣して(偽装する)、偽の文書を提供することができます。または、いつでも基本的な実装を分割するだけです。 – ssube

+0

@ Sushanth--私はそれを得ていない、方法は正しい方法ではなく、修正された値を返します、どのように守備? – CodeYogi

+0

おっと..私の悪い。私はそれを見逃した –

答えて

1

私は2つの論理的な理由、クロージャコンパイラを含む両方の参照:をチェック

  1. タイプ - この関数を呼び出すときに、閉鎖コンパイラは、戻り値の型がタイプDocumentであることを知っているだろうし、それがあることを決してヌルではない。おそらく、Google Closureの開発者はこれをClosure Compilerにハードコーディングしている可能性がありますが、明示的にすることで、グローバルオブジェクトに存在するプロパティのClosure Compilerに特別なケースを追加することは避けられます。

  2. 縮小化 - その関数がADVANCED_OPTIMIZATIONSを通過すると、goog.dom.getDocumenta.b.cのようなものに縮小さ得ることができます。クロージャコンパイラはdocumentの名前を変更することはできません。グローバルオブジェクトの変数名を制御することはできませんが、参照documentの名前を変更すると、ソースコードを小さくすることができます。

+0

私はあなたが私の質問を得るとは思わない、私は最初に機能が必要だった理由を尋ねている、あなたの言っていることは機能が縮小されるということです。 – CodeYogi

+0

'document'を縮小することはできません。この関数が提供する_reference_を 'document'にのみ縮小することができます。 – Technetium

+0

だから、あなたは、 "文書"というキーワードが圧縮されたコードから一切スキップされると言ったのですか? – CodeYogi

関連する問題

 関連する問題