You will have better luck if you do the following:
var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());
Note* It's preferable not to use numbers in javascript this way unless you have a specific need to avoid primitives.
The reason you are getting 0 is because the Number prototype defaults to zero if it is not instantiated.
Number is a prototype which is designed semantically to be used to spawn new objects which inherit these methods. These methods are not designed to be called directly from the Number prototype, but instead from the numbers themselves. Try the following:
(16).toExponential();
You have to wrap the number in parenthesis so the interpreter knows you're accessing methods and not defining a floating point.
The important thing here to understand is that the Number prototype provides all the methods that all numbers will inherit in javascript.
To explain further why you are getting a 0, the methods on the Number prototype are intended to be "bound" to a number object. They will use the bound object for input and will ignore any arguments. Since they are bound to the default Number object, the default number is 0, and therefore all methods will return their version of 0.
There is a way in javascript to rebind methods to an object using the "call" method (there's also bind and apply):
Number.prototype.toExponential.call(16);