我有一个这样的对象:
var MyObject = {
item_1: 15000,
item_2: new Array(),
item_3: new Array(),
init : function() {
}
}
我知道有一种方法可以循环遍历init函数检查中设置的变量,以查看该项是否是当时设置的值。如果没有,那就制作一个。
所以当我输入类似这样的内容时
MyObject.init({
item_1: 200,
item_2:{
item_a: "value"
},
item_3:{
item_y:"value",
item_z:"value"
}
});
然后遍历参数然后设置值。
答案 0 :(得分:5)
首先,你的语法错了。
var = MyObject{}
应该是:
var MyObject = {}
其次,您的密钥中不能有空格(除非您将密钥括在引号中),所以:
item 1 : 15000,
...
应该是:
item_1: 15000,
...
(但看起来有人在编辑中为你修好了。)
第三,你过于复杂了。如果你真的想通过对象内的属性循环,你可以这样做:
for (key in MyObject){
if (MyObject.hasOwnProperty(key)){
if (key == item_1){
key = 200;
}
}
}
但是正如您所看到的,如果您使用循环,则必须对每个键进行检查,以确保为正确的键分配正确的值。这是因为JavaScript不保证返回属性的顺序。
你可以这样做:
var MyObject = {
item_1: 15000,
item_2: new Array(),
item_3: new Array(),
init : function(item_1,item_2, item_3){
item_1 = item_1;
item_2 = item_2;
item_3 = item_3;
}
}
然后这样做:
MyObjectMyObject.init(
item_1 = 200,
item_2 = {item_a: "value"},
item_3 = {item_y:"value", item_z:"value"}
);
答案 1 :(得分:0)
如果你想要一个可变数量的参数,你可以使用arguments object(链接中的教程)访问它们,你可以在注释中使用for..in loop遍历所有参数。