Why is Boolean.prototype a Boolean object again? (And same for String and Number, but not Date or RegExp?)
问题 In ES5, Boolean.prototype is a Boolean object: The Boolean prototype object is itself a Boolean object (its [[Class]] is "Boolean") whose value is false. In ES6 / ES2015, it isn't: The Boolean prototype object is an ordinary object. It is not a Boolean instance and does not have a [[BooleanData]] internal slot. In ES2016, it is once again: The Boolean prototype is itself a Boolean object; it has a [[BooleanData]] internal slot with the value false. (and it remains so in ES2017 as well.) The