【问题标题】:JavaScript objects and setting variablesJavaScript 对象和设置变量
【发布时间】:2013-06-06 16:35:12
【问题描述】:

我有一个这样的对象:

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

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

【问题讨论】:

  • for..in 循环似乎是最好的选择。
  • JS对我来说是新的我该怎么办
  • 好吧,第一步应该是Google javascript for in loop - 第一个结果应该是this MDN article - MDN 是 JavaScript 的最佳资源之一。小心点,也有不好的,比如 W3Schools。
  • @Kolink -- 不幸的是,W3Schools 出现在大多数热门搜索中:\
  • 标题和问题都比较差。你的问题到底是什么?你有什么问题?

标签: javascript oop


【解决方案1】:

首先,你的语法是错误的。

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

【讨论】:

    【解决方案2】:

    如果您需要可变数量的参数,您可以使用arguments object(链接中的教程)访问它们,您可以使用for..in loop 像在 cmets 中一样循环访问所有参数。

    【讨论】:

    猜你喜欢
    • 2022-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2017-04-19
    • 2020-08-10
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多