创建对象的新实例的正确语法是什么,而不是指向原始对象的指针?这是我的例子:
var oItem = { element: null, colIndex: 0 };
var oInputs = { Qty: oItem, Tare: oItem, Rate: oItem, Total: oItem };
for (var oTitle in oInputs) {
oInputs[oTitle].element = ...
当我为任何oInputs[oTitle].element
设置oTitle
的值时,它会设置所有值var oInputs = { Qty: new oItem, Tare: new oItem, Rate: new oItem, Total: new oItem };
。我知道javascript通过引用传递对象,所以我假设它是因为它们都指向同一个对象。我试过这个,但显然是错的。
{{1}}
提前致谢。
答案 0 :(得分: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 = ...
答案 1 :(得分: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() };
答案 2 :(得分:2)
function oItem() {
this.element= null;
this.colIndex= 0;
}
var oInputs = { Qty: new oItem(), Tare: new oItem(), Rate: new oItem(), Total: new oItem() };