JavaScript对象和设置变量

时间:2013-06-06 16:35:12

标签: javascript oop

我有一个这样的对象:

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"
    }
});

然后遍历参数然后设置值。

2 个答案:

答案 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遍历所有参数。