关于文字对象语法的限制

时间:2011-10-13 10:22:09

标签: javascript

我知道文字对象语法的限制是名称必须是文字。

顺便说一下,我需要完成以下任务,你建议我用哪种方式?

我有一个对象obj1,我想遍历然后传递给另一个只接受像参数这样的文字对象的函数。

我只写了一个基本的例子,以了解我所要求的基本概念。

问题出在最后一个循环上,请参阅内联注释。

obj1 = {k1 : 1} // simple literal object

fn = function (json) {
    // this function can accept just  literal object 
    console.log("result: ", json); // {key : true}, but I want {k1 : true}
}

for (key in obj1) {
    obj = [];
    fn ({
        key : true // I want the key to be k1 and not key
    })
};

5 个答案:

答案 0 :(得分:2)

这样做......

var obj = {};
obj[key] = true;
fn(obj);

这就像你会得到的那样优雅。请不要使用eval()

答案 1 :(得分:1)

使用bracket notation将变量用作键。

function fn(obj) {
    console.log("result: ", obj);
}

for (var key in obj1) {
    var temp = {};
    temp[key] = true;
    fn (temp);
};

另请注意使用var(因此不创建全局范围变量)和不同的样式函数声明。

答案 2 :(得分:1)

 // this function can accept just  literal object 

没有。该函数不关心参数对象是如何构造的。

你可以做到

 obj = {};
 key = "k1";
 obj[key] = true;
 fn(obj);

答案 3 :(得分:1)

  

另一个只接受像参数这样的文字对象的函数。

没有这样的事情。在创建它之前,使用文字创建的对象与使用其他方式创建的对象之间没有区别。

for (key in obj1) {
    obj = [];
    var foo = {};
    foo[key] = true;
    fn (foo);
};

答案 4 :(得分:0)

可以尝试一下吗?

for (key in obj1) {
  var obj = {};
  obj[key] = true;
  fn (obj);
};