问题的逻辑属于实验性质,不需要讨论它的合理性,问题背景为:
在一个函数中,我定义了多个局部变量,然后定义了一个json对象,json对象中的属性和定义的局部变量构成一一对应的关系。
function testFn(){
var name='nihao';//定义的局部变量
var age=18;//定义的局部变量
var height=172;//定义的局部变量
var obj={//定义的json对象,属性名和上面的其他局部变量构成一一对应的关系
'name':'obj_nihao',
'age':20,
'height':183
}
for(var i in obj){
//通过i来识别到局部变量,比如i为'name'时,让name=obj.name
//让obj中的属性修改局部变量的值
}
console.log(name,age, height);
}
testFn();
现在想让obj一级属性一一对应的去修改局部变量的值,比如让obj.name去修改name变量的值,obj.age去修改age变量的值,以此类推。可惜我并没有找到解决方案。
现在我写了一个并不优雅,也不是我追求的自动识别的方案,代码如下:
function testFn(){
var name='nihao';//定义的局部变量
var age=18;//定义的局部变量
var height=172;//定义的局部变量
var obj={//定义的json对象,属性名和上面的其他局部变量构成一一对应的关系
'name':'obj_nihao',
'age':20,
'height':183
}
'name,age,height'.split(',').forEach(function(item,index){
switch(index){
case 0:name=obj[item];break;
case 1:age=obj[item];break;
case 2:height=obj[item];break;
}
});
console.log(name,age, height);
}
testFn();
这段代码也是傻的可怜,可惜确实没有找到识别这些变量值为值类型的变量的名字的方案,说的好绕口。
这个问题有点奇怪,是我在封装UI组件时思考的问题,希望大神们不惜赐教,大家一起来讨论分析下。