2012-03-15 17 views
0

私はこのようなことを達成しようとしています。Javascriptオブジェクト関連

/* Code start */ 

    function getCurrentTime() 
    { 
     var date = new Date(), 
     time = date.getTime(); 

     return time; 
    } 


var jsObject = { 
       "imageOne":"SomeText"+getCurrentTime(), 
       "imageTwo":"someOtherText"+getCurrentTime() 
       } 


setInterval(function(){ 
     console.log(jsObject.imageOne); 

     }, 3000); 
/* Code end */ 

タイマーが実行されるたびに、私はgetCurrentTime()を実行して最新の時刻を取得する必要があります。どうすればいいのですか?

+0

括弧なしで機能を呼び出すために、あなたがゲッター必要:[コードの例を](http://stackoverflow.com/a/ 9691520/938089?javascript-can-we-have-self-invoking-function-modules-assign-to-variablesを参照してください)。 –

答えて

3

あなたは物事を実行し、異なる結果を毎回取得する必要がある場合は、基本的には機能が必要になります。

"imageOne": function() { 
    return "SomeText" + getCurrentTime(); 
}, 

と:

console.log(jsObject.imageOne()); 

本当に必要ならば、あなたが()を省略することができますゲッターですが、関数を使う方が簡単です。ゲッターを使用して


get imageOne() { 
    return "SomeText" + getCurrentTime(); 
}, 

をこの方法では、obj.imageOneにアクセスするには、現在の時刻に応じて、異なる値にするたびに評価します。

+0

Thx pimvdb、私はうまく機能しました。私はこれを行うための他の方法があるかどうかを知りたい。このオブジェクトは多くの要素(キーと値のペア)を持ち、他のスクリプトから取り込まれているためです。 – phpsessionid

+0

@phpsessionid:どのように設定されていますか?それらに実際の時間が割り当てられている場合、例えば、 'SomeText123456'それから別の時間に置き換えるのはちょっと難しいです。 – pimvdb

+0

実際の時間は割り当てられていません。私は、多くのリンクを持つ大きなオブジェクトを解析サーバーに送信します。したがって、アナリティクスサーバーにアクセスするたびに、URLに最新のタイムスタンプが付いているはずです。リンクは50〜100の数字のようになります。 – phpsessionid

1

これを試してみてください:ここ

var jsObject = { 
    "imageOne":"SomeText", 
    "imageTwo":"someOtherText", 
    getLatestByName : function (name) { 
     return this[name] + getCurrentTime(); 
    } 
}; 


setInterval(function(){ 
    console.log(jsObject.getLatestByName("imageOne")); 
}, 3000); 

はフィドルです:http://jsfiddle.net/R7JQ3/

+0

Nemoy、これは動作しますが、タイムスタンプはテキストの間にあります。他のクエリパラメータ "imageTwo": "SomeText" + TIME-HERE + "その他のクエリパラメータ" – phpsessionid

+0

正確に何を望みますか? "他のクエリパラメータ"を外部から渡していますか、それともあなたの 'imageTwo'プロパティの一部ですか – Nemoy

+0

Nemoyは、TIMEスタンプを2つの文字列の間に入れることができたことを意味しています。お手伝いをしてくれてありがとうございます。 – phpsessionid

関連する問題