Javascript 关于文字对象语法的限制
我知道literal对象语法的限制是名称必须是literal 顺便问一下,我需要完成以下任务,你推荐我用哪种方式 我有一个对象obj1,我想遍历它,然后传递给另一个函数,该函数只接受文本对象类参数 我只是写了一个基本的例子来了解我所问问题的基本思路 问题在最后一个循环中,请参阅内联注释Javascript 关于文字对象语法的限制,javascript,Javascript,我知道literal对象语法的限制是名称必须是literal 顺便问一下,我需要完成以下任务,你推荐我用哪种方式 我有一个对象obj1,我想遍历它,然后传递给另一个函数,该函数只接受文本对象类参数 我只是写了一个基本的例子来了解我所问问题的基本思路 问题在最后一个循环中,请参阅内联注释 obj1 = {k1 : 1} // simple literal object fn = function (json) { // this function can accept just lit
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
})
};
就这么做吧
var obj = {};
obj[key] = true;
fn(obj);
这是你将得到的最优雅的。请不要使用eval()
将变量用作键
function fn(obj) {
console.log("result: ", obj);
}
for (var key in obj1) {
var temp = {};
temp[key] = true;
fn (temp);
};
还要注意使用(因此您不需要创建全局范围变量)和不同样式的函数声明
// this function can accept just literal object
否。该函数不关心参数对象是如何构造的
你能行
obj = {};
key = "k1";
obj[key] = true;
fn(obj);
另一个只接受文本对象的函数,如参数
没有这样的事。在创建对象的那一刻之外,使用文字创建的对象和以其他方式创建的对象之间没有区别
for (key in obj1) {
obj = [];
var foo = {};
foo[key] = true;
fn (foo);
};
可以试试这个吗
for (key in obj1) {
var obj = {};
obj[key] = true;
fn (obj);
};
不过,在循环中声明
var
(在循环中没有自己的作用域)有点让人困惑。只是想让OP清楚一些。你认为声明var-temp对n00bs来说不会那么困惑代码>在循环之外,然后在循环中设置它?不幸的是,Javascript中变量作用域的工作方式总是会让新手感到困惑,如果他们以前用过其他语言编程,可能会更加困惑。是的,在循环顶部声明var就不那么容易混淆了,因为它更接近变量的实际工作方式。这是一种不自然的写作方式,但强迫自己这样做就是强迫自己思考这个问题。或者使用CoffeeScript;-)谢谢你的回复,它们都是有效的。所以我奖励第一个。