Primitive value types: number, string, boolean, null, and undefined.
// a primitive numbervar n = 100;console.log(typeof n); // "number" // a Number objectvar nobj = new Number(100);console.log(typeof nobj); // "object"
One reason to use the wrapper objects is when you want to augment the value and persist state. Because primitives are not objects, they cannot be augmented with properties.
// primitive stringvar greet = "Hello there"; // primitive is converted to an object// in order to use the split() methodgreet.split(' ')[0]; // "Hello" // attemting to augment a primitive is not an errorgreet.smile = true; // but it doesn't actually worktypeof greet.smile; // "undefined"
When used without new, wrapper constructors convert the argument passed to them to a primitive value:
typeof Number(1); // "number"typeof Number("1"); // "number"typeof Number(new Number()); // "number"typeof String(1); // "string"typeof Boolean(1); // "boolean"