1. /**
    2. * 栈模型
    3. * 栈(stack)是限制插入和删除只能在一个位置上进行的表
    4. * 该位置是表的末端叫做栈的顶(top)
    5. * 对栈的基本操作有 push 进栈和 pop 出栈,前者相当于插入,后者则是删除最后插入的元素
    6. */
    7. class Stack {
    8. constructor() {
    9. /** 栈数据 */
    10. this.items = [];
    11. /** 记录栈顶位置 */
    12. this.top = 0;
    13. }
    14. /** 进栈 */
    15. push(element) {
    16. this.items[this.top++] = element;
    17. }
    18. /** 出栈 */
    19. pop() {
    20. return this.items[--this.top];
    21. }
    22. /** 查看栈顶元素 */
    23. peek() {
    24. if (this.isEmpty) return "Empty";
    25. return this.dataStore[this.top - 1];
    26. }
    27. /** 返回栈内元素总数 */
    28. get length() {
    29. return this.items.length;
    30. }
    31. /** 判断是否空栈 */
    32. get isEmpty() {
    33. return !this.items.length;
    34. }
    35. /** 清除栈 */
    36. clear() {
    37. this.items = [];
    38. }
    39. }
    40. // 初始化一个栈
    41. var stack = new Stack();
    42. stack.push(1);
    43. stack.push(2);
    44. stack.pop();
    45. stack.push(4);
    46. console.log(stack);
    47. console.log(stack.isEmpty);
    48. console.log(stack.length);