我想写一个通用的方法来更改函数内部的属性。它实际上发生在函数内部,但是我认为可以通过以下方式简化问题。

var showItemA = true;
var showItemB = true;
var showItemC = false;

var switchToggle = function (toggleTarget) {
    toggleTarget = !toggleTarget
    // Do other stuff
    console.log(toggleTarget);
    //false
};

switchToggle(showItemA);
console.log(showItemA);
//true; but I want it to be false


我很了解this earlier question,但是我需要通用它来处理不同的属性。有没有一种方法可以将外部变量或属性扔给函数并改变其值?

最佳答案

可以使用物体吗?这基本上与您在找到的答案中使用window相同,但是不会不必要地用大量新变量污染全局空间。

var obj = {};
var key = 'showItemA';
obj[key] = true;

var switchToggle = function (toggleTarget) {
    obj[toggleTarget] = !obj[toggleTarget];
    console.log(obj[toggleTarget]);
    // false
};

switchToggle(key);
console.log(obj[key]);
// false


DEMO

10-06 11:36