美文网首页
面向对象 封装组件优化

面向对象 封装组件优化

作者: 毕子歌 | 来源:发表于2017-03-30 22:47 被阅读0次

代码
主要是JS
CSS中有个技巧,灰色的背景用box-shadow

//页面居中
position:fixed;
top:50%;
left:50%
transform:translate(-50%,-50%)
function Dialog(options) {         // 这是一个构造函数
  
  this.options = options
  this._prepareHtml()         //加下划线的是不想给使用者用的方法
  this._bindEvents()
  this._mount()
  
}

Dialog.prototype._bindEvents = function() {
  var div = this.div
  var buttonCallbacks = this.options.buttonCallbacks
  
  var dialog = this
  div.addEventListener('click', function xxx(e) {
    if (e.target.tagName === 'BUTTON') {
      var index = parseInt(e.target.getAttribute('data-index'), 10)
      if (buttonCallbacks[index].call() !== false) {
        dialog.close(div)
      }
    }
  })
  
}


Dialog.prototype._prepareHtml = function() {
  var {title,content,buttons} = this.options
  var div = this.div = document.createElement('div')
  div.className = 'dialog'
  var buttonString = buttons.map(function(text, index) {
    return `<button data-index="${index}">${text}</button>`
  }).join('\n')
               
  var html = `                 //ES6  模板字符串(可以加空格)
      <header>
        ${title}               //${    
      </header>
      <main>
        ${content}
      </main>
      <footer>
        ${buttonString}
      </footer>
`
  div.innerHTML = html
  
}

Dialog.prototype.close = function () {
  this.div.parentNode.removeChild(this.div)
}

Dialog.prototype._mount = function(){
  document.body.appendChild(this.div)
}


/*使用者*/
/*1面向对象方案*/

// API
// close - 调用 close 可以关闭 dialog

xxx.onclick = function() {
  var dialog = new Dialog({                                         //这里是构造函数的典型用法,使用new操作符来创建新对象。
    title: '标题',
    content: '你确定要删除吗?',
    buttons: ['确定', '取消'],
    buttonCallbacks: [function() {
      console.log('他确定一定以及肯定')
      return false
    }, function() {
      console.log('他反悔了')
    }]
  })
  console.log(dialog)
  
  setTimeout(function(){
    dialog.close()
  },3000)
}

http://js.jirengu.com/cosi/1/edit?html,css,js,output

相关文章

  • 面向对象 封装组件优化

    代码主要是JSCSS中有个技巧,灰色的背景用box-shadow http://js.jirengu.com/co...

  • 面向对象组件封装

    1.封装一个轮播组件 实现代码 2.封装一个曝光加载组件 实现代码 3.封装一个Tab组件 实现代码 4.封装一个...

  • 封装组件-面向对象

    tab组件化tab组件化代码 图片曝光组件化图片曝光组件化代码 轮播组件化轮播组件化代码

  • 面向对象——组件封装

    轮播组件效果 代码 曝光组件效果 代码 tab组件效果 代码

  • 面向对象-组件封装

    题目1: 封装一个轮播组件 demo 题目2: 封装一个曝光加载组件 demo 题目3: 封装一个 Tab 组件 ...

  • 面向对象:论封装的重要性

    面向对象的基本概念包括对象、类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。 封装 访问权限的控制常被...

  • python 面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 ...

  • 14.Python对象封装

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 ...

  • 面试 | java基础

    面向对象 1、面向对象特征? 封装封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成...

  • OC面向对象

    OC面向对象—封装 一、面向对象和封装 面向对象的三大特性:封装(成员变量)、继承和多态 在OC语言中,使用@in...

网友评论

      本文标题:面向对象 封装组件优化

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