Javascript - 动态评估对象以更改其值
Javascript - Eval a Object dynamically to change its value
>我得到了一个对象名称,set1 到 set4,我需要使用 eval() 或窗口在循环中动态更改它们的值,下面的示例是使用 eval(),我使用了 window[] 但仍然保持相同的结果,无法使用"make+set"函数成功更改对象的值。
var set1 = {desc:"111",url:"http://photo1.com"};
var set2 = {desc:"222",url:"http://photo2.com"};
var set3 = {desc:"333",url:"http://photo3.com"};
var set4 = {desc:"444",url:"http://photo4.com"};
function make_set(set,desc,url) {
set = {};
set.desc = url;
set.url = url;
return set;
}
for (var i = 1; i < 5; i++) {
tempSet = eval("set"+i);
tempSet = make_set(tempSet,"new description","new url");
console.log(tempSet)
};
console.log(set1);
console.log(set2);
console.log(set3);
console.log(set4);
我已经用函数覆盖了对象make_set但仍然无法成功更改函数的值,我在函数上做错了吗? 还是我错过了什么?
Object {desc: "new url", url: "new url"}
Object {desc: "new url", url: "new url"}
Object {desc: "new url", url: "new url"}
Object {desc: "new url", url: "new url"}
Object {desc: "111", url: "http://photo1.com"}
Object {desc: "222", url: "http://photo2.com"}
Object {desc: "333", url: "http://photo3.com"}
Object {desc: "444", url: "http://photo4.com"}
您正在创建一个新对象,并对其进行tempSet
设置,而不是修改现有集。
for (var i = 1; i < 5; i++) {
tempSet = eval('set' + i + ' = make_set(tempSet,"new description","new url")');
console.log(tempSet);
};
但是你真的不应该使用eval
.
var sets = [];
sets[0] = {desc:"111",url:"http://photo1.com"};
sets[1] = {desc:"222",url:"http://photo2.com"};
sets[2] = {desc:"333",url:"http://photo3.com"};
sets[3] = {desc:"444",url:"http://photo4.com"};
function make_set(desc, url) {
return {desc:desc, url:url};
}
for (var i = 0; i < 4; i++) {
sets[i] = make_set("new description","new url");
console.log(sets[i])
};
console.log(sets[0]);
console.log(sets[1]);
console.log(sets[2]);
console.log(sets[3]);
删除该行set = {};
它正在创建一个新对象,而不是更改传入的对象。
现场演示
有关更详细的说明,请参阅"为什么在向此对象分配其他内容时不通过引用传递此对象?"的答案。
相关文章:
- 如何使用javascript从主svg对象动态创建svg视图框
- 将对象动态插入到现有对象中
- 向对象动态添加属性
- 在JavaScript中将一个对象动态添加到另一个对象
- 如何基于对象动态创建和链接到页面
- 将数据从一个 json 对象动态添加到另一个 json 对象
- 如何制作从对象动态加载的图形
- 如何在jquery中对对象动态添加多个过滤器
- 如何在 JavaScript 中基于另一个对象动态创建属性和对象
- jQuery 和 AJAX - 使用 Ajax 添加的对象动态不适用于 jQuery 函数
- Javascript对象:动态创建属性和属性名称
- 如何在JavaScript中使坐标对象动态
- 如何将对象动态添加到对象中'的属性
- Javascript对象(动态属性名称)
- 从对象动态创建JQuery Mobile页面
- 为svg对象动态分配数据属性
- 如何为添加到另一个JSON文件中的每个对象动态创建JSON文件
- 将选择对象动态添加到表中
- 向Javascript对象动态添加新对
- 用Javascript对象动态构建HTML表