美文网首页
javascript设计模式——亨元模式

javascript设计模式——亨元模式

作者: 蟹老板爱写代码 | 来源:发表于2018-04-03 10:27 被阅读0次

    亨元模式::运用共享技术有效地支持大量的细颗粒的对象,避免对象拥有相同内容造成多余的开销。

    实现翻页功能

      <div id="container">
        <div class="" id="next_page">下一页</div>
      </div>
      <script>
        // 通过该方法实现元素的复用,防止创建过多页面元素
          var Flyweight = function () {
            var created = []
            function create() {
              var dom = document.createElement('div')
              document.getElementById('container').appendChild(dom)
              created.push(dom)
              return dom
            }
            return {
              getDiv: function() {
                if (created.length < 5) {
                  return create()
                } else {
                  // 获取第一个元素,并插入最后面
                  var div = created.shift()
                  created.push(div)
                  return div
                }
              }
            }
          }()
          var article = ['第一条新闻', '第二条新闻', '第三条新闻', '第四条新闻', '第五条新闻', '第六条新闻', '第七条新闻']
          var pager = 0,
              num = 5,
              len = article.length
          for (var i = 0; i < 5; i++) {
            if (article[i]) {
              Flyweight.getDiv().innerHTML = article[i]
            }
          }
    
          document.getElementById('next_page').onclick = function() {
            if (article.length < 5) return;
            var n = ++pager * num % len,
                j = 0
            for(; j < 5; j++) {
              if(article[n + j]) {
                Flyweight.getDiv().innerHTML = article[n + j]
              } else if(article[n + j - len]) {
                Flyweight.getDiv().innerHTML = article[n + j - len]
              } else {
                Flyweight.getDiv().innerHTML = ''
              }
            }
          }
          </script>
    

    相关文章

      网友评论

          本文标题:javascript设计模式——亨元模式

          本文链接:https://www.haomeiwen.com/subject/bbfqhftx.html