2010-09-18 110 views
0

在以下示例中,如何修改变量“sizeMod”,它是每个对象的属性?Javascript - 属性的另一个对象的属性?

// Will be created by ids 
var objs = {}; 

// Set up objects 
$.each(ids, function(index, value){ 
    objs[value] = { 
     sizeMod: 0 
    }; 
    objs[value] = { 
     change: function(){ 
      sizeMod += 1; // How do I write this line correctly? 
     } 
    }; 
}); 

回答

1

第二种说法是破坏您的原始对象,其中sizeMod被声明。

这应该工作(未经测试)

$.each(ids, function(index, value){ 
    objs[value] = { 
     sizeMod: 0, 
     change: function(){ 
      this.sizeMod += 1; // How do I write this line correctly? 
     } 
    }; 
}); 

你可以叫为

objs['relevantkey'].change(); 
+0

优雅的解决方案。谢谢。 – Matrym 2010-09-18 06:24:01

+0

“this”是否总是引用顶层对象,或者它是否引用嵌套值(根据具有多层的json对象)。 – Matrym 2010-09-18 06:49:48

1

看看这有助于:

. 
. 
. 
objs[value] = { 
    sizeMod: 0 
}; 
objs[value].change = function(){ 
    this.sizeMod += 1; 
} 
. 
. 
. 
相关问题