模块化实例

2017-02-23  本文已影响12人  jrg_memo

需求:用JS渲染一个 可以动态插入内容的 歌曲列表

方案一 遍历
方案二 模板引擎

分析

    function stringFormat(str){}
    var str = '<li>{0} - {1}</li>';
    var result = stringFormat(str,'刚刚好','薛之谦');

    因为
       *function stringFormat(str){} 它的参数是[形参 , 实参]
         形参 str = '<li>{0} - {1}</li>'
         实参 params = ['刚刚好','薛之谦'] 即【第0个替换的变量,第1个替换的变量】
     
    所以
         第0个匹配到的字符串是{0},第0个替换的变量是'刚刚好'
         △1-6   的作用就是  {0} =  '刚刚好'
         △regex 的作用就是找出 {0} 
         △4-6   的作用就是找出 '刚刚好'

    总结
     △1-6   的作用就是 找出str中第n个被替换的字符串,用params[n]来替换它
     △regex 的作用就是找出 被替换的字符串
     △4-6   的作用就是找出 params[n]

步骤

步骤

复杂版!!待续...

参考1
参考2

目标:
<%this.name%> => .call(data)

思路:
把函数用<% %>包裹成字符串
使用正则把字符串中的<%函数%>匹配出来
放进一个 ''空字符串 or []空数组 拼接出函数
把字符串放在页面上,运行的时候调用函数

Tips:
    dom节点类型
      element    
      text   
      fragment内存中的虚拟对象,默认不被放在页面上

    命名规则
      表示string     var div = <div></div>   
      表示DOM对象     var elDiv = document.createElement('div')     
      表示JQuery对象  var $Div = $('div') 

    文本API
      .textContent    H5标准写法 太长
      .innerHtml      支持IE但有脚本注入风险    
      .innerText      兼容广无副作用-----------推荐使用

    形参作用
      1 影响函数的length属性,一个函数的length就是形参的个数
      2 相当于给函数的第一个参数取名 var string = arguments[0]

    调用arguments
      由于它是 伪数组,不可以用数组的方法
      这样调用 [].slice.call(arguments,1)  相当于  arguments.slice(1)
      这种方式 先借用一个空数组的方法,后调用.call()把数组的this改成arguments
      这样一来 就把数组的方法绑定到arguments身上了

    声明函数的形式
      * function xx(){ console.log(1) }
      * var xx = function (){console.log(2) }
      * var func = new function('参数','函数体')  相当于
        var func = function(x){console.log(3)}   此方法 用字符串创建一个函数
上一篇 下一篇

猜你喜欢

热点阅读