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:
var
s
=
new
String
(
"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:
var
a
=
new
String
(
"abc"
);
typeof
a
;
// "object" ... not "String"
a
instanceof
String
;
// true
Object
.
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 ...
Get You Don't Know JS: Types & Grammar now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.