When we are creating a data structure or object that other developers might also use, we want to protect the internal elements so only the methods we exposed are used to modify the internal structure. In the case of the Stack class, we want to make sure the elements are added to the top of the stack and it is not possible to add elements in the base of the stack or any other random position (in the middle of the stack). Unfortunately, the items and the count properties we declared in the Stack class are not protected and this behavior is due to how JavaScript classes work.
Try running the following code:
const stack = new Stack();
console.log(Object.getOwnPropertyNames(stack)); // {1}
console.log(Object.keys(stack)); // {2}
console.log(stack.items); // {3}
We will get ["count", "items"] as...