<div>Number.prototype.pow = function pow(radix) {</div><div>  return Math.pow(this, radix);</div><div>};</div><div><br></div><div>//alert(2.pow(3)); // error, decimal point, not property accessor</div><div>alert(2..pow(3));  // 8</div>
<div>alert(NaN.pow(0)); // 1</div><div><br></div><div>until numbers are valid as digit. I don't see any advance on using Number.prototype for anything</div><div>until NaN is not instanceof Number but NaN.__proto__ is === Number.prototype, I don't see methods useful in the Number.prototype</div>
<div><br></div><div>Last, but not least, I agree these are easy to implement through pure JS, no need to specs this stuff or make it native ( since after last 2 points I don't see common use cases in any case for polluted Number.prototype )</div>
<div><br></div><div>my 2 cents,</div><div>br</div><br><div class="gmail_quote">On Wed, Jan 25, 2012 at 8:53 PM, Xavier MONTILLET <span dir="ltr"><<a href="mailto:xavierm02.net@gmail.com">xavierm02.net@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">About Object.method vs Object.prototype.method, I think it's something<br>
they adopted for *objects* because on objects, if you put these<br>
methods on the prototype, they might get shadowed. But since I'm<br>
talking about numbers, there is no such problem.<br>
<br>
And I know I can make polyfills but I'd prefer to have it in the<br>
language itself because I'd be sure to have the same API in every<br>
environment and I wouldn't have to have a polyfill I have to include<br>
every single time. Plus I think this is generic enough to be part of<br>
core.<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, Jan 25, 2012 at 8:36 PM, Jussi Kalliokoski<br>
<<a href="mailto:jussi.kalliokoski@gmail.com">jussi.kalliokoski@gmail.com</a>> wrote:<br>
> You can get emulate that kind of a feature quite simply in ES5+ (and<br>
> earlier, if you have enough polyfills, or make compromises) if you like it,<br>
> see <a href="https://gist.github.com/1678065" target="_blank">https://gist.github.com/1678065</a> .<br>
><br>
> Cheers,<br>
> Jussi<br>
><br>
><br>
> On Wed, Jan 25, 2012 at 8:49 PM, Herby Vojčík <<a href="mailto:herby@mailbox.sk">herby@mailbox.sk</a>> wrote:<br>
>><br>
>> I see more a "cultural" question here. There are lots of functions in ES<br>
>> which would make perfect (and probably better) sense if called on object<br>
>> than from outside (definePrototype & Co., maybe even isArray), but it is<br>
>> probably seen more "Javascriptic" to put them statically into Object,<br>
>> Number, Array, whatever.<br>
>><br>
>> I think it has something with feeling they should not be dynamic part of<br>
>> object's contract, but on the contrary, they should be "decoupled" into safe<br>
>> managerial havens of Object, Array etc.<br>
>><br>
>> But I can't say for sure.<br>
>><br>
>> As I see it, in ES this is the way. Even if I don't like it, and it seems<br>
>> to me cumbersome to always do Object.fooBarBazAndMore(x, ...), I accept it<br>
>> as "Javascriptic" way to go.<br>
>><br>
>> Moving just pow would create more confusion, I think. Moving more would<br>
>> also create lot of confusion (in actual state, only hasOwnProperty is the<br>
>> case which seems to not align with this way, being in Object.prototype; and<br>
>> you often see code like var hasOwn = Object.prototype.hasOwnProperty; or<br>
>> even var hasOwn =<br>
>> Function.prototype.call.bind(Object.prototype.hasOwnProperty) just to bring<br>
>> it back to "external actors" domain).<br>
>><br>
>> Herby<br>
>><br>
>><br>
>> Xavier MONTILLET wrote:<br>
>>><br>
>>> Hi,<br>
>>><br>
>>> I think it'd be nice to have the functions available in Math in<br>
>>> Number.prototype.<br>
>>> e.g.<br>
>>><br>
>>> Number.prototype.pow = function ( p ) {<br>
>>>     return Math.pow( this, p );<br>
>>> };<br>
>>><br>
>>> Since pow is supposed to be an operator, I feel better when writing<br>
>>> a.pow( b ) than Math.pow( a, b );<br>
>>><br>
>>> About the other methods, I'm not sure. They really are "functions" in<br>
>>> maths so it doesn't feel that weird calling them with Math.f( ).<br>
>>> Moreover if you store them in local variables.<br>
>>> But I still find doing a.abs( ).ceil( ) is way more convenient than<br>
>>> Math.ceil( Math.abs( a ) ).<br>
>>><br>
>>> So since numbers are litterals and therefore extending the prototype<br>
>>> won't break anything, why not add it?<br>
>>> _______________________________________________<br>
>>> es-discuss mailing list<br>
>>> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
>>> <a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
>><br>
>> _______________________________________________<br>
>> es-discuss mailing list<br>
>> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
>> <a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
><br>
><br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</div></div></blockquote></div><br>