for ... in
loop and Object.keys()
method). This allows us to create kind of "hidden" properties that prevent accidantal access. Symbol.*
:Symbol.iterator
we can specify iterator for an object:Symbol.for()
. This function takes a string argument and returns Symbol value that is associated with the string you pass. In case there was no Symbol associated with that string, the new one is created and returned.