On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:

> Two questions on new Number APIs:
> 
> 1) Is it intentional that clz is on Number.prototype instead of Number?  Why?

Generally, operations that operate upon a value of a specific type are 
expressed as instance methods.  We see this all the time with regular objects 
but we also we see this in String where we have many methods that operate upon 
string values.  For Number we have the toFixed, etc. methods that convert  
number values to strings.  To me, clz seem like it fall into this category of 
method that operate upon instances of a specific type.  For example, compare 
and contrast:

'00101000111100001111000011110000'.indexOf('1') // 2
0x28f0f0f0.clz()   //2

both use instance methods, applied to a primitive value, that  report something 
about the structure of the value

The (new) is* methods on the Number constructor are generally different in that 
they are predicates that test values that may not actually be numbers so they 
can't be Number.prototype methods.

I think there is a stronger case to me made for Math.clz(number).  
Number.prototype and Math both seem like plausible homes for clz.  In the end, 
I placed it on Number prototype because it is an operation that is specific to 
a particular numeric encoding rather than an implementation of a general 
mathematical function. 

>  
> 2) Is it intentional that Number.toInteger(Infinity) returns true?
Huh? How's that?

Number.toInteger is specified as the single step:

    1 Return ToInteger(number)

and step 4 of the abstract operation ToInteger(number):

  4 If number is +0, -0, +∞, or -∞, return number.



> 
> Luke
> 
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to