在布尔原型中切换布尔值

时间:2017-04-29 19:02:17

标签: javascript boolean

我正在尝试为布尔值创建一个切换方法,我无法弄清楚如何设置布尔值,这是我的代码:

var booleanMethod = Boolean.prototype

booleanMethod.toggle = function() {
    //something like this.value = !this.value
}

1 个答案:

答案 0 :(得分:0)

简单回答:你不能。

在原型内部,this引用对象的当前实例,在本例中为Boolean。您无法修改this - 它是。您不能为值赋值,只能为值赋值。

this = !this;

就像说true = false没有任何意义。

此外,您无法在实例的方法中更改实例本身。当然,您可以使用setter更改实例的属性,但无法更改实例。这打破了设计模式,您不能只是将实例重新分配给实例方法中的其他内容。说我们有一个苹果。你不能把苹果变成橙子或其他苹果。

最后,否定外面的价值有什么不对?您无法更改该实例的方法中的实例,但您可以重新分配对该实例的引用。

回到苹果和橙色的例子,想象你现在手里拿着苹果。你不能改变苹果本身,它总是会成为特定的苹果,但你可以改变你手中的水果,手是参考,水果是一个实例。

在这种情况下,你可以在实例方法之外取消它:

let x = false; //or Boolean(false)
x = !x;

使用NOT运算符没有任何问题。