2011-12-18 10 views
2

パラメータ私のコードの一部であるはここ

実際のコード:

トップ:

var NS = (function (global) 
    { 

中東:

var ViewH = 
{ 
    portfolio: function (embeddedAml) 
     { 
     internals 
     }, 

下:

return {  
    ViewHPortfolio: ViewH.portfolio, 
}; 

})(window); 

しかし、IEはvar1が定義されていないと報告しています。私はそれを関数パラメータリストで定義し、それを関数で使用します。通訳者が本当に言っていることがあまりにも分かりません。

私は、共通のオブジェクトにそれらを移動するまで、これらの機能が働いていた - 私はContainerFunc1としてHTMLにそれを渡されたので、コンテナ

はまた、IEは私がContainer.func1を渡すことはできないだろう。

質問は、どのように変数var1、var2 ...などを認識するようにインタープリタを取得するのですか?

ありがとう、

+1

これは無効な構文 – Raynos

答えて

3

あなたはセミコロン挿入の犠牲者だと思います。

変更この:これに

return 
    { 
    ContainerFunc1: Container.func1 
    ContainerFunc2: Container.func2 
    } 

return { 
    ContainerFunc1: Container.func1 
    ContainerFunc2: Container.func2 
    }; 

また、私はこの

Container 
    { 
    func1 : function(var1){...do something with var1...} 
    func2 : function(var1){} 
    } 

この

var Container = { 
    func1 : function(var1){...do something with var1...} 
    func2 : function(var1){} 
    }; 
されるべきだと思います;

は最後に、あなたが

return { 
    ContainerFunc1: Container.func1 
    ContainerFunc2: Container.func2 
}; 

を行うと、あなたは、これがコール内部Container.func1thisContainerFunc1ポイント超がContainerされません機能 - にもかかわらず

var resultObj = Top(); 
resultObj.ContainerFunc1(X); 

言うときがあることに注意してくださいthisはresultObjになります。

最後に、JavaScriptで大文字で始まる関数は、コンストラクタとして使用することを意図しています。この規則に従うには、名前をtopに変更して、小文字のtにすることを検討する必要があります。

+0

@ stack.user.0です。これはできません。 JSは返品後にセミコロンを付けます。 returnと言う必要があります。返信と同じ行の中括弧を使用します。 –

+0

'Container'の前に' var'を修正しませんでした。 – Raynos

+0

@Raynos - 暗黙的なグローバル!!!修正されました、ありがとうございます。 –