我有这样一个对象:
var MyObject = {
item_1: 15000,
item_2: new Array(),
item_3: new Array(),
init : function() {
}
}
Run Code Online (Sandbox Code Playgroud)
我知道有一种方法可以循环遍历init函数检查中设置的变量,以查看该项是否是当时设置的值.如果没有,那就做一个.
所以当我输入这样的东西时
MyObject.init({
item_1: 200,
item_2:{
item_a: "value"
},
item_3:{
item_y:"value",
item_z:"value"
}
});
Run Code Online (Sandbox Code Playgroud)
然后遍历参数然后设置值.
首先,你的语法是错误的.
var = MyObject{}
Run Code Online (Sandbox Code Playgroud)
应该:
var MyObject = {}
Run Code Online (Sandbox Code Playgroud)
其次,您的密钥中不能有空格(除非您将密钥括在引号中),因此:
item 1 : 15000,
...
Run Code Online (Sandbox Code Playgroud)
应该:
item_1: 15000,
...
Run Code Online (Sandbox Code Playgroud)
(但看起来有人在编辑中修复了这个问题.)
第三,你过于复杂了.如果你真的想循环通过对象内的属性,你可以这样做:
for (key in MyObject){
if (MyObject.hasOwnProperty(key)){
if (key == item_1){
key = 200;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,如果您使用循环,则必须对每个键进行检查,以确保为正确的键分配正确的值.这是因为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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后这样做:
MyObjectMyObject.init(
item_1 = 200,
item_2 = {item_a: "value"},
item_3 = {item_y:"value", item_z:"value"}
);
Run Code Online (Sandbox Code Playgroud)