我想这样做:
a = false;
a.toggle();
console.log(a) // -> true;
所以我创造了这个:
Boolean.prototype.toggle = function (){this = !this; return this;}
但它只是不起作用。我尝试了许多类似版本的valueOf和其他什么,但总是失败。
我怀疑Boolean
对象没有setter方法@ prototype
。但是,你们可以帮忙解决这个问题。
提前致谢。
(请不要回答“为什么a = !a
对你没有好处?”)
答案 0 :(得分:3)
首先,您永远不能在javascript中分配到this
,因此this = !this
将无效。
其次,布尔对象似乎没有setter。它有valueOf()
,并且有toString()
。
这是我能来的最接近的地方:
Boolean.prototype.toggle = function (){return !this.valueOf();}
var a = false;
var b = a.toggle();
console.log(b) // -> true;