2016-10-20 12 views
1

私は最近この問題に取り組んできましたが、私はこのアプローチに利点があるかどうか疑問に思っています。さんはcluster.workersオブジェクトを見てみましょう:私はこれに利益を見ることができる唯一の理由は、列挙可能なプロパティ対配列

{ '1': 
    Worker { 
    domain: null, 
    _events: { message: [Function] }, 
    _eventsCount: 1, 
    _maxListeners: undefined, 
    suicide: undefined, 
    state: 'none', 
    id: 1, 
    process: 
     ChildProcess { 
     domain: null, 
     _events: [Object], 
     _eventsCount: 5, 
     _maxListeners: undefined, 
     _closesNeeded: 2, 
     _closesGot: 0, 
     connected: true, 
     signalCode: null, 
     exitCode: null, 
     killed: false, 
     spawnfile: '/home/karl/.nvm/versions/node/v4.5.0/bin/node', 
     _handle: [Object], 
     spawnargs: [Object], 
     pid: 7687, 
     stdin: null, 
     stdout: null, 
     stderr: null, 
     stdio: [Object], 
     _channel: [Object], 
     _handleQueue: null, 
     send: [Function], 
     _send: [Function], 
     disconnect: [Function], 
     _disconnect: [Function] } }, 
    '2': 
    Worker { 
    domain: null, 
    _events: { message: [Function] }, 
//...etc. 

があります。それはオブジェクトの量です定数です。の配列ではないので、その意味で変更することはできません。

他の利点はありますか?

+0

あなたはそれをあなたが1.worker.process.ChildProcess.domain' –

+0

'のような欲望のものに達する可能性がこの方法を行う場合、私は推測しますあなたはcluster.workers [recordNumber]を使ってこのようなレコードを直接参照することができますが、ほとんどの場合、Object.keys()を使わずに配列メソッドを使うことができます。レコードを直接参照する必要があります。 – Shilly

+0

@KevinKloet: "index"に基づくエントリへのアクセスは、配列オブジェクトであるか、または上記のようなオブジェクトであっても実質的に同じです: 'cluster.workers [1] .process.domain'または' cluster.workers ["1"]。 process.domain'(どちらの場合でもどちらでも動作します)。 *(上記の 'Worker'と' ChildProcess'は階層のレベルではありません。オブジェクトのタイプですので、私はそこに残しました。) –

答えて

0

私はそれに全く利益を見ません。アレイを変更するのと同じように簡単に修正することができます。cluster.workers["3"] = new Worker(...)は配列の場合とほぼ同じです。cluster.workers.push(new Worker(...))となります。

JavaScriptの標準配列はaren't really arrays at allです。 これらは、特定のクラスのプロパティ名(配列インデックスと呼ばれます)と特別なlengthプロパティに対して特定のプロトタイプと特殊な動作を持つオブジェクトです。実際、「配列インデックス」は、そのオブジェクトにあるように文字列(JavaScriptエンジンによる実行時の最適化を禁止します)です。

(それは私の貧血の小さなブログの記事です。)

+0

この例の列挙可能なプロパティは、sugerのない配列だけです。 –

+0

@KarlMorrison:かなり、ああ。 :-) よく置きます。 –

関連する問題