Javascript 切换嵌套的布尔对象属性(任意深度)--是否可以不使用eval?
考虑以下代码:Javascript 切换嵌套的布尔对象属性(任意深度)--是否可以不使用eval?,javascript,eval,Javascript,Eval,考虑以下代码: var a = { b: { c: true }, d: { e: false } }; function toggle() { var prop=''; for (var i = 0; i<arguments.length; i++) { prop += '.' + arguments[i]; } eval('a'+prop+"=!a"+prop); } t
var a = {
b: {
c: true
},
d: {
e: false
}
};
function toggle() {
var prop='';
for (var i = 0; i<arguments.length; i++) {
prop += '.' + arguments[i];
}
eval('a'+prop+"=!a"+prop);
}
toggle('b', 'c');
console.log('a.b.c : ', a.b.c);
console.log('a.d.e : ', a.d.e);
toggle('d', 'e');
console.log('a.b.c : ', a.b.c);
console.log('a.d.e : ', a.d.e);
toggle('b', 'c');
console.log('a.b.c : ', a.b.c);
console.log('a.d.e : ', a.d.e);
toggle('d', 'e');
console.log('a.b.c : ', a.b.c);
console.log('a.d.e : ', a.d.e);
var a={
b:{
c:是的
},
d:{
e:错
}
};
函数切换(){
var prop='';
对于(var i=0;i,可以使用数组表示法来访问属性,而不是点表示法
function toggle() {
var obj = a;
for (var i = 0; i<arguments.length-1; i++) {
obj = obj[arguments[i]];
}
obj[arguments[i]] = !obj[arguments[i]];
}
函数切换(){
var obj=a;
对于(VarI=0;iYes,确实如此!这就是我要找的:)