10

私は次のコードを持っています。これはJavaScriptモジュールです。

(function() {

   // Object
   var Cahootsy;

   Cahootsy = {
       hello: function () {
           alert('test');
       },
    };

    (Cahootsy.scope = (function() {
        return this;
     })()).Cahootsy = Cahootsy;

    return Cahootsy;

}).call(this);

セクションがわかりません:

    (Cahootsy.scope = (function() {
        return this;
     })()).Cahootsy = Cahootsy;

'this'モジュールを参照するオブジェクトを作成してから、Cahootsy変数をグローバルCahootsy変数に割り当てていると思います。私が理解していないのは、なぜ「これ」をCahootsy.scopeに割り当てる必要があるのか​​ということです。

4

2 に答える 2

6

あなたはそれを次のように少し分解することができます:

var getScope = function() {return this;}
Cahootsy.scope = getScope();
getScope().Cahootsy = Cahootsy;

それが行うことは、グローバルスコープを取得することです(通常window、ただし常にではありません)。次にCahootsy、オブジェクトのscopeプロパティを介してからグローバルスコープへのリンクを作成し、スコープのプロパティを介して他の方法でリンクを作成しCahoostyます。

その結果、ブラウザでwindow.Cahootsyは、オブジェクトが取得window.Cahootsy.scopeされ、ウィンドウに戻ります。

于 2012-12-02T02:03:23.350 に答える
3

(function() { return this; })()グローバルオブジェクトを返すためのトリックです。

このステートメントはCahootsy.scope、(将来使用するために)グローバルオブジェクトに設定しCahootsy、外界に公開するグローバルオブジェクトのプロパティも設定しますCahootsy

于 2012-12-02T02:02:24.013 に答える