2017-01-09 9 views
0

モジュラーパターンを使用して2つのオブジェクトが定義されているサンプルコードをアップロードしました。javacript内の別のオブジェクトにアクセスできません

var obj1 = { 
    cachdom: function() { 
     // querying a dom element 
     this.$interactiveReport = $('#BugPreventiveIR_data_panel'); 

     } 
    }; 

    var obj2 = { 
     $IR: obj1.$interactiveReport, 
     logging: function() { 
     // This returns undefined 
     console.log(this.$IR); 
     } 
    }; 

    // Invoking the Objects only after document is ready. 
    $(document).ready(function() { 
     console.clear(); 
     interactiveReportRegion.init(); 
     displayOfBugList.logging(); 
    }); 

ただし、コンソールをチェックインすると、obj2.loggingはこれを未定義に返します。しかし、コンソールからobj1。$ interactiveReportにアクセスすると、オブジェクトの値を見ることができます。同様に、2番目のオブジェクトをコンソールに再度定義すると、obj2。$ IRの正しい値が取得されます。

何らかの理由で、2番目のオブジェクトの最初のオブジェクトのプロパティにアクセスできません。

私の全体のコードは、ロギング機能は、これはそれを行う必要があります...それが構築されたオブジェクトではありませんので、「これは」何を意味するのかを知る必要があり、ここで https://gist.github.com/alaghu/6225e50b35ecfdaf2ee8f752f596f49b

+1

これはそれだとはっきりしていませんが、あなたはカッコ内に中かっこがありません – user3685285

+0

'}'が最後にあります'obj1'。 – Barmar

+0

変数 'interactiveReportRegion'と' displayofBugList'はどこで設定しますか? – Barmar

答えて

0

見つけることができます。

displayOfBugList.logging.apply(displayOfBugList); 
+0

こんにちは、これはロギング機能に追加すると、 "Uncaught RangeError:Maximum call stack size exceeded"エラーが表示されます。 – Anand

+0

私はあなたの与えられたコードの中でそれをするものを見ません。コード全体を投稿してください。 –

+0

こんにちは、https://gist.github.com/alaghu/6225e50b35ecfdaf2ee8f752f596f49b – Anand

0

"this"の範囲を変更します。これを修正するためにlamda関数の使用を検討してください。 「これ」とバインドする能力もありますが、私はその方法から恥ずかしがります

+0

でご覧になれます。ご協力ありがとうございます。しかし、私はなぜこれも(行40)理解できません// Similairlyこれもundedefinedとして表示されますが、コンソールからアクセス可能です console.log(interactiveReportRegion。$ interactiveReport); obj.propertyを使ってアクセスしていても動作しません。 – Anand

+0

lamda関数が出力を変更しなかった場合、私の本能はjQueryと関係します。私はそこを見るだろう –

関連する問題