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 the output for lines {1}
or {2}
. This means the count
and items
variables are public, as we easily access them, as demonstrated in line {3}
. With this...