扩展JS Boolean.prototype失败

时间:2012-04-23 14:47:21

标签: javascript boolean prototype

我想这样做:

a = false;

a.toggle();

console.log(a) // -> true;

所以我创造了这个:

Boolean.prototype.toggle = function (){this = !this; return this;}

但它只是不起作用。我尝试了许多类似版本的valueOf和其他什么,但总是失败。

我怀疑Boolean对象没有setter方法@ prototype。但是,你们可以帮忙解决这个问题。

提前致谢。

(请不要回答“为什么a = !a对你没有好处?”)

1 个答案:

答案 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;​