JS: Symbol Object
New in JS2015.
What is the Keyword “Symbol”
Symbol
is the value of the property key "Symbol"
of the Global Object
.
window.Symbol === Symbol
Type
Type of Symbol
is a function.
// type of Symbol console.log( typeof Symbol === "function" );
Parent
Parent of Symbol
is Function.prototype.
Reflect.getPrototypeOf ( Symbol ) === Function.prototype
Purpose
Purpose of Symbol
is:
- To create values of Symbol.
- Used as a namespace to hold static methods.
- Holds the property key
"prototype"
. Its value is the parent of all instance of symbol.
Symbol Constructor
Properties
for(key)
hasInstance
isConcatSpreadable
iterator
keyFor(sym)
match
replace
search
species
split
toPrimitive
toStringTag
unscopables
2017-02-10 following is work in progress.
Symbol.for ( key )
Symbol.for(string)
→ access shared symbols registry.
Symbol.hasInstance
Symbol.isConcatSpreadable
Symbol.iterator
Symbol.keyFor ( sym )
Symbol.match
Symbol.replace
Symbol.search
Symbol.species
Symbol.split
Symbol.toPrimitive
Symbol.toStringTag
Symbol.unscopables
Well-Known (Predefined) Symbols
Well-Known symbols are symbols predefined in JavaScript.
Well-known symbols are built-in Symbol values They are typically used as the keys of properties whose values serve as extension points. Unless otherwise specified, well-known symbols values are shared by all Code Realms.
Well-Known symbols are denoted with 2 at signs in front, like this:
@@iterator
Symbol.iterator
the operator instanceof
is now a method of function, with property key
[Symbol.hasInstance]
.
someting like
o instanceof f
same as
f[Symbol.hasInstance](o)
.
this makes it extensible.
Symbol.unscopables
Symbol.match
method for customizing
str.match(obj)
.
Well-known Symbols
Symbol.hasInstance
-
A method that determines if a constructor object recognizes an object as one of the constructor's instances. Called by the semantics of the
instanceof
operator. Symbol.isConcatSpreadable
- A Boolean valued property that if true indicates that an object should be flattened to its array elements by Array.prototype.concat .
Symbol.iterator
- A method that returns the default Iterator for an object. Called by the semantics of the for-of statement.
Symbol.match
- A regular expression method that matches the regular expression against a string. Called by the String.prototype.match method.
Symbol.replace
- A regular expression method that replaces matched substrings of a string. Called by the String.prototype.replace method.
Symbol.search
- A regular expression method that returns the index within a string that matches the regular expression. Called by the String.prototype.search method.
Symbol.species
- A function valued property that is the constructor function that is used to create derived objects.
Symbol.split
- A regular expression method that splits a string at the indices that match the regular expression. Called by the String.prototype.split method.
Symbol.toPrimitive
- A method that converts an object to a corresponding primitive value.
Symbol.toStringTag
- A String valued property that is used in the creation of the default string description of an object. Accessed by the built-in method Object.prototype.toString .
Symbol.unscopables
-
An object valued property whose own property names are property names that are excluded from the
with
environment bindings of the associated object.