2016-09-28 4 views
0

私は、一度インスタンス化されるクラス(LiveScript)を持っていますが、そのrenderメソッドは何度も呼び出されます。関数が呼び出されるたびに同じ番号を生成する

class Test 
    -> 
    console.log 'constructor, called only once' 

    render: -> 
     test = {key: 4124312} 
     test1 = {key: 234897} 
     test2 = {key: 87234} 

これは、代わりに、私はむしろそれを生成したいキーをハードコーディングの作品:render方法で作成された各オブジェクトは、renderのすべての呼び出しで同じまま一意のキーを持っている必要があります。乱数を使用すると、の呼び出しごとに新しい鍵が生成されます。このクラスの外部にいくつかのキーのリストを持ち、それらのアイテムをポップすると、renderの作成されたオブジェクトの順序が変わる可能性があるため、どちらも機能しません。どのようにすれば、どのようにして鍵を生成することができますか?

+0

をあなたはして鍵を生成しようとしていますコンストラクタの乱数? – maioman

+0

これは、['Symbol's](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)を使用した場合によく似ています。識別子値 –

+0

を気にするのはなぜですか? – Ven

答えて

0

これを生成することは、実行コンテキスト中に変更されないキーで一意のオブジェクトを保持する方法が必要なように思えます。これは永続性と呼ばれます。 JSで

、あなたのストレージオブジェクト内の各エントリのキーはあなたの保存されたオブジェクトの一意のキーである、あなたのオブジェクトを格納するオブジェクトリテラル、使用することができます。

{ 
    1234: { name: "test", key: 1234 }, 
    2345: { name: "test1", key: 2345 }, 
    3456: { name: "test2", key: 3456 } 
} 
関連する問題