summary

js模式及应用:

1.代理模式

  代理和本体接口的一致性

  用虚拟代理合并HTTP请求

  缓存代理用于ajax异步请求数据

  缓存代理惰性加载

  例子:图片惰性加载的例子

2.发布订阅模式

  先订阅再发布:listen与trigger理解

  先发布再订阅:例子,qq离线消息的应用

  模块间的通信

  例子:用户登陆后,更新UI等一系列操作

3.策略模式

  例子:form表单验证

4.装饰者模式

   

  在不改变A模块的条件下,给A模块添加功能,

  

  例子:各种链式操作。(可为A模块提供before,after链式调用)

5.适配器模式

   

  当A和B模块的接口不一致时,提供一个中间件用于转换

浏览器渲染:

1.浏览器渲染: Nodes --> LayoutObject --> PaintLayer --> GraphicsLayer

  每一个LayoutObject都有对应的渲染层(PaintLayer)

  

  所谓开启硬件加速(translate3D,will-change属性),就是将渲染层提升为合成层,而合成层有单独的GraphicsLayer,由GPU来渲染

2.开闭原则

其他:

1.二进制 

  

 -7 << 2 结果为 -28 (-7*4)

 -7 >> 2 结果为 -2   ((-7-1)/4)

2.判断li属于第几个ul

<ul>

  <li>1</li>

  <li>2</li>

  <li>3</li>

  <li onclick="test(this)">4</li>

  <li>5</li>

</ul>

<script>

  function test(elem){

    var loc = [].indexOf.call(elem.parentNode.children, elem)

    console.log(loc)

  }

</script>

3.前端压缩图片可用canvas实现

  canvas获取到的图片数据,每4组是一个像素的数据,分别表示rgba(三个色值及透明度)

猜你喜欢

转载自hyacinth-dk.iteye.com/blog/2309388