JSFiddle - React, Tailwind, and code Playground
by btipling
JavaScript
var Stack = (function() {
var privilegedInstanceMethods = {
push: function(x) {
this.arr.push(x);
},
pop: function() {
return this.arr.length ? this.arr.splice(this.arr.length - 1, 1)[0] : null;
},
size: function() {
return this.arr.length;
},
empty: function() {
return this.arr.length === 0;
},
print: function() {
console.log(this.arr);
},
get: function() {
return this.arr;
},
};
var Stack = function () { // shadows outer Stack
var privateArr = [];
this.arr = Object.create(privilegedInstanceMethods, {
arr: {
get: function() {
return privateArr;
},
},
});
};
return Stack;
}());
// works
var s1 = new Stack();
var s2 = new Stack();
s1.arr.push("s1a");
s1.arr.push("s1b");
s2.arr.push("s2a");
s2.arr.push("s2b");
s2.arr.print();
s1.arr.print();