What's the point of the Boolean object?

前端 未结 9 1076
遥遥无期
遥遥无期 2020-12-09 15:28

I am reading through the Mozilla Manual on JavaScript, and I come to this point in my reading, Boolean object. I can\'t see a single use for them. What\'s their point? Why w

9条回答
  •  佛祖请我去吃肉
    2020-12-09 15:47

    Because this is (somewhat sadly) how the language was defined -- I suspect it was originally for performance/optimization; note the case of assignment to a string property below. (Java works similarly, although Scala and Python largely reject this distinction).

    Note that Boolean isn't the only "wrapper type". There are also String and Number, for instance.

    Because of this there remains a number of quirks (the below could just as much apply to Boolean):

    typeof("foo") // string
    typeof(new String("foo")) // object
    "foo" instanceof String // false
    new String("foo") instanceof String // true
    
    // result is undefined: a string is a primitive and silently "ate" the assignment
    // this also makes it a much cheaper value as it's not a "real" object
    x = "f"; x.bar = 42; x.bar
    
    // result is 42: a String is a "real" object with real properties!
    // however, this also means that it may have a good bit more overhead
    x = new String("f"); x.bar = 42; x.bar
    

    I know this didn't "answer" the question, but rather chucks some more wood on the fire ;-)

    The only real "gotcha" otherwise from the above is that perhaps new Boolean(false) is a truth-y value.

    Happy coding.

提交回复
热议问题