【问题标题】:Toggle boolean value in Boolean prototype在布尔原型中切换布尔值
【发布时间】:2017-09-27 16:59:37
【问题描述】:

我正在尝试为布尔值创建一个切换方法,但我不知道如何设置布尔值,这是我的代码:

var booleanMethod = Boolean.prototype

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

【问题讨论】:

    标签: javascript boolean


    【解决方案1】:

    简单的回答:你不能。

    在原型内部时,this 指的是对象的当前实例,在本例中为 Boolean。您不能修改 this - 这是一个 。你不能给一个值赋值,只能是一个值的引用。

    this = !this;
    

    就像说true = false 一样毫无意义。

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

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

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

    在这种情况下,您可以在实例方法之外对其进行否定:

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 1970-01-01
      • 2021-09-02
      • 2021-02-24
      • 2012-07-21
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多