javascript - 扩展 JS Boolean.prototype 失败

标签 javascript boolean prototype

我想这样做:

a = false;

a.toggle();

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

所以我创建了这个:

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

但它就是行不通。我也使用 valueOf 等尝试了许多类似的版本,但总是失败。

我怀疑 Boolean 对象在其 prototype 上没有 setter 方法。但也许你们可以帮忙解决这个问题。

提前致谢。

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

最佳答案

首先,您永远无法在 javascript 中分配给 this,因此 this = !this 不起作用。

其次, boolean 对象似乎没有 setter。它有 valueOf()toString()

这是我能达到的最接近的结果:

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

var a = false;
var b = a.toggle();

console.log(b) // -> true;​

关于javascript - 扩展 JS Boolean.prototype 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282821/

相关文章:

javascript - JavaScript 中instanceof 运算符的用法

javascript - 如何禁用调整大小/方向更改的功能?

python - 如何使用带有 boolean 数组的 np.infs 将数组的所有索引归零?

c++ - boolean 运算符++ 和 --

实例中未显示 Javascript 原型(prototype)更改

javascript - 子类化错误: adding prototype methods does not take effect

javascript - openlayers 标记上的 Bootstrap 弹出窗口

javascript - 在 puppeteer 的 headless true 模式下找不到选择器的 Node

JavaScript Jasmine 单元测试覆盖率

google-app-engine - 如何将一个简单的 HTML 复选框变成 Google App Engine 上的 boolean 值?