2012-04-29 8 views
1

イムアプリの名前空間を構築し、次のように見えるの定義:は自己実行機能では、オブジェクトのプロトタイプ

var app = {}; 
app.utils = { 
    Expiration: function(){ // contructor 
    ... // some code 
    }, 
    init: (function(){ 
     app.utils.Expiration.prototype = function(){....} 
    ()) 
}; 

をしかし、私はエラーを取得します私は、アプリケーションの範囲外のプロトタイプを定義することができます、私の質問は:私はそれを定義することができますかapp.utils自己実行機能または他の手段、ありがとう。

+0

なぜ、最初の 'util'定義の後で定義したいのですか? – loganfsmyth

+0

これはペタニックに聞こえるかもしれませんが、私のコードを複雑に見せたいだけです。 – loki

+1

@ user1108631 - うーん、Javascriptはそれを許可しないので、あなたはそれをどのように見たいかにかかわらず、それを行うことはできません。 'app.utils'は宣言全体が終了するまで正しく定義されていません。 – jfriend00

答えて

5

静的宣言では、独自の変数名を参照することはできません。あなたの自己実行関数は静的宣言時に評価され実行されます。したがって、app.utilsはまだ定義されていません。

代替手段があります。ここでは1です:

var app = {}; 
app.utils = {}; 

app.utils.Expiration = function(){ // contructor 
    ... // some code 
    }; 

app.utils.Expiration.prototype = ... 

これらの連続文の各プロパティの別のレベルを追加しているので、これらの文は、前の要素が整っているように、この順番で次々に実行取得する必要があります。

関連する問題