2016-10-18 6 views
0

私は2つの部分からなる問題があります。内に値を入れてオブジェクトを取り込み、変数値との比較

1)複雑なオブジェクト内にネストされた一意の値のリストにアクセスする必要があります。私は、次のようなconsole.log経由でオブジェクトを出力することができる午前:

console.log(dataStore); 

これは(一部で)以下を出力します

`Object 
    getResponses: function getResponses(ids) 
     arguments: null
  
     caller: null
  
     length: 1
  
     name: "getResponses"
  
     prototype: Object
  
     __proto__: function()
   
     <function scope> 
      Closure 
       responseCache: Object 
        12345: gr.Response
  
        12346: gr.Response 
        etc... 
    getImg: function (imageId) 
    etc... ` 

私はresponseCacheの下での数値のリストを収集し、コールが必要になります。 12345、12346、12347などがあります。これらの値の合計は非常に大きくなることがあります。 10である可能性があり、リストで100になる可能性があります。

2)私は、上記のオブジェクトの一部ではない変数の値を比較する条件文を作成する必要があります。例えば:それはここで問題のために重要、しかしvariableXはその反復するページの属性をループである

variableX = variableXvalue; 

if ("variableXvalue" is one of the unique values in "responseCache") { 
//then do this 
} 

わからない場合。ページ上の一致するすべてのタグ/属性をループし、ループするたびにこれらの属性値をresponseCache値の完全なリストと比較する必要があります。

この問題をご検討いただきありがとうございます。

+0

これはちょうどあなたの開発ツールはあなたに良いです。 'responseCache'にアクセスすることはできません。それはクロージャーの内側です。事実上、私的な変数です。 –

答えて

0

この種のコードをどのように記述できるかの例を見てみましょう。

var obj = (function() { 
    var responseCache = { 
    12345: 12, 
    12348: 34, 
    12355: 56 
    }; 
    return { 
    getResponses: function getResponses(ids) { 
     return responseCache[id]; 
    } 
    }; 
})(); 
console.log(obj); 

あなたのコンソールでそのコードを実行する場合は、ドリルダウンして、あなたが見ているものと本質的に同じ出力を見ることができ得るでしょう。さて、どうすればresponseCacheに直接アクセスできますか?できません。事実上プライベートであり、そのクロージャ内から直接アクセスできるだけです。外部コードはその変数に直接アクセスすることはできません。 obj上の関数がそれを使用する場合にのみ間接的にアクセスすることができます。

+0

これらの値にアクセスする方法はありませんか? 'variableCache'の一部としてそれらの値をIDと区別して、' variableX'にマッチする任意の数値文字列についてオブジェクト全体をスキャンすることさえできますか? – david

+0

@davidあなたはそれを持っています。表示されているのは、開発環境によって提供される追加情報です。オブジェクトがあなたに直接データを渡さない限り、コードにはそのデータへのアクセス権がありません。 –

+0

オブジェクトを直接私に渡すにはどうすればいいですか?私は 'responseCache'を定義するスクリプトにアクセスすることができますが、それはIF文が必要な場所とは異なるJSファイルにあるため、最初のJSファイルの数値文字列を集めてクロージャの外側に渡す方法があります他のJSファイルですか?もちろん、ダビド。 – david

関連する問題