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,确实如此!这就是我要找的:)