Chapter 3. Natives
Several times in Chapters 1 and 2, we alluded to various built-ins,
usually called “natives,” like String and Number. Let’s examine
those in detail now.
Here’s a list of the most commonly used natives:
-
String() -
Number() -
Boolean() -
Array() -
Object() -
Function() -
RegExp() -
Date() -
Error() -
Symbol()—added in ES6!
As you can see, these natives are actually built-in functions.
If you’re coming to JS from a language like Java, JavaScript’s String() will look like the String(..) constructor you’re used to for creating string values.
So, you’ll quickly observe that you can do things like:
vars=newString("Hello World!");console.log(s.toString());// "Hello World!"
It is true that each of these natives can be used as a native constructor. But what’s being constructed may be different than you think:
vara=newString("abc");typeofa;// "object" ... not "String"ainstanceofString;// trueObject.prototype.toString.call(a);// "[object String]"
The result of the constructor form of value creation
(new String("abc")) is an object wrapper around the primitive
("abc") value.
Importantly, typeof shows that these objects are not their own special
types, but more appropriately they are subtypes of the object type.
This object wrapper can further be observed with:
console.log(a);
The output of that statement varies depending on your browser, as developer consoles are free to choose however they feel it’s appropriate to serialize the object for ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access