思考场景

我们常用的浏览器历史页面也是根据这个栈的结构来实现的,只有当我们新访问一个页面的时候,我们的历史页面栈就会加一,当点击返回的时候,只能返回到刚才进入的页面。

我们用一个内嵌的iframe内的历史页面栈来查看其浏览器的history是否和我们设想的是一致的。

代码实现

代码地址:https://codepen.io/robinson90/pen/KjNaEO

  1. function History(){
  2. let historyStack = new Stack();
  3. let fowardStack = new Stack();
  4. this.pushPage = function(page){
  5. historyStack.push(page)
  6. }
  7. this.back=function(){
  8. if(historyStack.isEmpty()){
  9. console.log('没有历史页面可以返回')
  10. return
  11. }else {
  12. let page = historyStack.pop();
  13. console.log('返回页面',page);
  14. fowardStack.push(page);
  15. }
  16. }
  17. this.forward = function(){
  18. if(fowardStack.isEmpty()){
  19. console.log('没有下一步页面可以前进')
  20. return
  21. }else {
  22. let page = fowardStack.pop();
  23. console.log('前进页面',page);
  24. historyStack.push(page);
  25. }
  26. }
  27. }
  28. let historySample = new History();
  29. historySample.pushPage('baidu');
  30. historySample.pushPage('aiqiyi');
  31. historySample.back()
  32. historySample.forward()
  33. historySample.back()
  34. historySample.back()
  35. historySample.back()
  36. historySample.pushPage('aiqiyi');
  37. historySample.forward()
  38. historySample.forward()
  39. historySample.forward()