Modern JavaScript From The Beginning from Brad Traversy
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>JavaScript Sandbox</title>
</head>
<body>
<script src="app.js"></script>
</body>
</html>
// Create a symbol
// const sym1 = Symbol();
// const sym2 = Symbol('sym2');
// console.log(typeof sym2);
// console.log(Symbol('123') === Symbol('123'));
// console.log(`Hello ${sym1.toString()}`);
// Unique Object Keys
const KEY1 = Symbol();
const KEY2 = Symbol('sym2');
const myObj = {};
myObj[KEY1] = 'Prop1';
myObj[KEY2] = 'Prop2';
myObj.key3 = 'Prop3';
myObj.key4 = 'Prop4';
// console.log(myObj[KEY1]);
// console.log(myObj[KEY2]);
// Symbols are not enumerable in for...in
// for(let i in myObj) {
// console.log(`${i}: ${myObj[i]}`);
// }
// Symbols are ignored by JSON.stringify
console.log(JSON.stringify({key: 'prop'}));
console.log(JSON.stringify({[Symbol('sym1')]: 'prop'}));