Augmenting Number.prototype with the functions from Math

Herby Vojčík herby at
Wed Jan 25 10:49:28 PST 2012

I see more a "cultural" question here. There are lots of functions in ES 
which would make perfect (and probably better) sense if called on object 
than from outside (definePrototype & Co., maybe even isArray), but it is 
probably seen more "Javascriptic" to put them statically into Object, 
Number, Array, whatever.

I think it has something with feeling they should not be dynamic part of 
object's contract, but on the contrary, they should be "decoupled" into 
safe managerial havens of Object, Array etc.

But I can't say for sure.

As I see it, in ES this is the way. Even if I don't like it, and it 
seems to me cumbersome to always do Object.fooBarBazAndMore(x, ...), I 
accept it as "Javascriptic" way to go.

Moving just pow would create more confusion, I think. Moving more would 
also create lot of confusion (in actual state, only hasOwnProperty is 
the case which seems to not align with this way, being in 
Object.prototype; and you often see code like var hasOwn = 
Object.prototype.hasOwnProperty; or even var hasOwn = just to 
bring it back to "external actors" domain).


Xavier MONTILLET wrote:
> Hi,
> I think it'd be nice to have the functions available in Math in
> Number.prototype.
> e.g.
> Number.prototype.pow = function ( p ) {
>      return Math.pow( this, p );
> };
> Since pow is supposed to be an operator, I feel better when writing
> a.pow( b ) than Math.pow( a, b );
> About the other methods, I'm not sure. They really are "functions" in
> maths so it doesn't feel that weird calling them with Math.f( ).
> Moreover if you store them in local variables.
> But I still find doing a.abs( ).ceil( ) is way more convenient than
> Math.ceil( Math.abs( a ) ).
> So since numbers are litterals and therefore extending the prototype
> won't break anything, why not add it?
> _______________________________________________
> es-discuss mailing list
> es-discuss at

More information about the es-discuss mailing list