-3

我有一个这样的对象:

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

然后循环遍历参数,然后设置值。

4

2 回答 2

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"}
);
于 2013-06-06T16:49:05.767 回答
0

如果您想要可变数量的参数,您可以使用arguments 对象(链接中的教程)访问它们,您可以使用for..in 循环遍历所有参数,就像评论中一样。

于 2013-06-06T16:49:23.917 回答