开发者

Extending the Boolean Object in Javascript with an 'invert' function

开发者 https://www.devze.com 2023-04-10 20:51 出处:网络
I would like to extend the Boolean object with a prototype function that inverts it\'s current value. Until now, I\'ve been doing something like this:

I would like to extend the Boolean object with a prototype function that inverts it's current value. Until now, I've been doing something like this:

var bool = true;
bool = !bool;
console.log(bool);  // false

My attempt开发者_如何学JAVAs at extending the Boolean object were not fruitful. That's how far I got:

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

var bool = true;
bool = bool.invert();
console.log(bool);  // false

Close, but not close enough. I am looking for a solution along these lines:

var bool = true;
bool.invert();
console.log(bool);  // false

Yes, I know, extending build-in Object is commonly considered a bad idea. Please let's save that discussion for another day.


Scalar values are immutable in all oop languages, you need a new class

var BooleanBuilder = function( data ){ this._data = !!data; };

BooleanBuilder.prototype.valueOf = function() {
    return this._data;
};
BooleanBuilder.prototype.invert = function() {
    this._data = !this._data;
};

var bool = new BooleanBuilder(true);
alert(bool.valueOf());
bool.invert();
alert(bool.valueOf());  // false

but this is not so smart, you can store the boolean-value in one object and pass this object as reference

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号