2009-04-24 13 views
4

元のオブジェクトのポインタとは対照的に、オブジェクトの新しいインスタンスを作成する正しい構文は何ですか?私はどんなoTitleためoInputs[oTitle].elementの値を設定するとき、それはそれらすべての値を設定しますJavascript新しいオブジェクトの参照

var oItem = { element: null, colIndex: 0 }; 
var oInputs = { Qty: oItem, Tare: oItem, Rate: oItem, Total: oItem }; 
for (var oTitle in oInputs) { 
    oInputs[oTitle].element = ... 

:ここに私の例です。私は、javascriptが参照によってオブジェクトを渡すことを知っているので、すべて同じオブジェクトを参照しているためです。私はこれを試みたが、明らかに間違っている。

var oInputs = { Qty: new oItem, Tare: new oItem, Rate: new oItem, Total: new oItem }; 

ありがとうございます。

答えて

9

は、次の操作を行います

function OItem() { 
    this.colIndex = 0; 
} 

var oInputs = { Qty: new OItem(), Tare: new OItem(), Rate: new OItem(), Total: new OItem() }; 

してからプロパティを設定します。

for (var oTitle in oInputs) { 
    oInputs[oTitle].element = ... 
+0

私に例を挙げることはできますか?おかげで – Praesagus

+0

完璧、ありがとう。 :) – Praesagus

2
function oItem() { 
this.element= null; 
this.colIndex= 0; 
} 
var oInputs = { Qty: new oItem(), Tare: new oItem(), Rate: new oItem(), Total: new oItem() }; 
+1

いいですが、プロトタイプまたはオブジェクトコンストラクタを示すために、大文字の最初の文字の規則に固執します。 – cgp

3

これは、コンストラクタを作成する別の方法です:今

function Item(element,colIndex){ 
    if (this instanceof Item){ 
     this.element = element || null; 
     this.colIndex = colIndex || 0; 
    } else { 
     return new Item(element,colIndex); 
    } 
} 

あなたドンItemの新しいインスタンスに新しい演算子が必要です。

var oInputs = { Qty: Item(), 
       Tare: Item(), 
       Rate: Item(), 
       Total: Item() }; 
関連する問題