//格式化方 " /> 99爱在线精品视频免费观看9,久久婷婷丁香五月色综合啪免费,国产成年人在线观看

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Prototype Template對象 學(xué)習(xí)

復(fù)制代碼 代碼如下:
var Template = Class.create({
//初始化方法
initialize: function(template, pattern) {
this.template = template.toString();
this.pattern = pattern || Template.Pattern;
},

//格式化方法,如果從Java的角度來說,其實(shí)叫format更好 :)
evaluate: function(object) {
    //檢查是否定義了toTemplateReplacements方法,是的話調(diào)用
    //整個(gè)的Prototype框架中,只有Hash對象定義了這個(gè)方法
if (object && Object.isFunction(object.toTemplateReplacements))
object = object.toTemplateReplacements();

    //這里的gsub是String對象里面的方法,可以簡單的認(rèn)為就是替換字符串中所有匹配pattern的部分
return this.template.gsub(this.pattern, function(match) {
//match[0]是整個(gè)的匹配Template.Pattern的字符串
     //match[1]是匹配字符串前面的一個(gè)字符
     //match[2]是匹配${var}這個(gè)表達(dá)式的部分
     //match[3]是'#{var}'表達(dá)式的'var'部分

     //如果object為null,則把所有的${var}表達(dá)式替換成''
if (object == null) return (match[1] + '');

     //取得匹配表達(dá)式前一個(gè)字符
var before = match[1] || '';
     //如果前一個(gè)字符串為'/',則直接返回匹配的表達(dá)式,不進(jìn)行替換
if (before == '//') return match[2];

var ctx = object, expr = match[3];
     //這個(gè)正則表達(dá)式好像就是檢查var是否是合法的名稱,暫時(shí)沒看懂這個(gè)正則表達(dá)式的意義?
var pattern = /^([^.[]+|/[((?:.*?[^//])?)/])(/.|/[|$)/;
match = pattern.exec(expr);
     //如果var不符合要求,則直接返回前一個(gè)字符
if (match == null) return before;
//逐個(gè)替換'#{var}'表達(dá)式部分
while (match != null) {
         //不懂下面這個(gè)檢查什么意思?
var comp = match[1].startsWith('[') ? match[2].gsub('////]', ']') : match[1];
ctx = ctx[comp];
if (null == ctx || '' == match[3]) break;
expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
match = pattern.exec(expr);
}
     //返回替換后的結(jié)果,'#{var}' ==> 'value'
return before + String.interpret(ctx);
});
}
});
//默認(rèn)的模板匹配正則表達(dá)式,形如#{var},很像JSP中的EL表達(dá)式
Template.Pattern = /(^|.|/r|/n)(#/{(.*?)/})/;

上面基本上把evaluate方法講了一遍,有些地方?jīng)]怎么看明白,那些正則表達(dá)式太難懂了。。。誰知道的告訴我?

下面看一下示例:
復(fù)制代碼 代碼如下:
var myTemplate = new Template('The TV show #{title} was created by #{author}.');

var show = {title: 'The Simpsons', author: 'Matt Groening', NETwork: 'FOX' };

myTemplate.evaluate(show);
// -> The TV show The Simpsons was created by Matt Groening.

復(fù)制代碼 代碼如下:
var t = new Template('in #{lang} we also use the //#{variable} syntax for templates.');
var data = {lang:'Ruby', variable: '(not used)'}; t.evaluate(data);
// -> in Ruby we also use the #{variable} syntax for templates.

復(fù)制代碼 代碼如下:
//自定義匹配模式
var syntax = /(^|.|/r|/n)(/<%=/s*(/w+)/s*%/>)/;

//matches symbols like '<%= field %>'
var t = new Template('<div>Name: <b><%= name %></b>, Age: <b><%=age%></b></div>', syntax);

t.evaluate( {name: 'John Smith', age: 26} );
// -> <div>Name: <b>John Smith</b>, Age: <b>26</b></div>


復(fù)制代碼 代碼如下:
var conversion1 = {from: 'meters', to: 'feet', factor: 3.28};
var conversion2 = {from: 'kilojoules', to: 'BTUs', factor: 0.9478};
var conversion3 = {from: 'megabytes', to: 'gigabytes', factor: 1024};

var templ = new Template('Multiply by #{factor} to convert from #{from} to #{to}.');

[conversion1, conversion2, conversion3].each( function(conv){ templ.evaluate(conv); });
// -> Multiply by 3.28 to convert from meters to feet.
// -> Multiply by 0.9478 to convert from kilojoules to BTUs.
// -> Multiply by 1024 to convert from megabytes to gigabytes.

JavaScript技術(shù)Prototype Template對象 學(xué)習(xí),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 男男高H啪肉Np文多攻多一受 | 入禽太深在线观看免费高清 | 国内精品伊人久久久久 | 果冻传媒MV免费播放在线观看 | 無码一区中文字幕少妇熟女网站 | 怡春院院日本一区二区久久 | 国内精品久久久久影院男同志 | YELLOW高清在线观看2019 | 亚洲精品无码久久久久A片空 | 精品国产国产综合精品 | 狠狠色综合久久丁香婷婷 | 校花被扒衣吸乳羞羞漫画 | 综合一区无套内射中文字幕 | 亚洲欧美一区二区三区导航 | 国产99视频在线观看 | 色AV色婷婷96人妻久久久 | 99日精品欧美国产 | 免费看毛片的网址 | 国产成人精品综合在线观看 | 亚洲日本乱码中文论理在线电影 | 麻豆AV久久AV盛宴AV | 永久免费观看视频 | 亚洲AV无码乱码A片无码蜜桃 | yin乱教师系列合集 yin荡体育课羞耻play双性 | 农村脱精光一级 | 91欧洲在线视精品在亚洲 | 给个男人都懂的网址2019 | 国产精品99久久久久久AV下载 | 国产亚洲精品久久久久久国模美 | 亚洲欧洲精品A片久久99 | 亚洲精品无夜久久久久久久久 | 四虎国产精品永久免费入口 | 2020国产欧洲精品视频 | 激情丛林电影完整在线 | 91精品乱码一区二区三区 | 青青青国产依人精品视频 | 日本三级按摩推拿按摩 | 亚洲精品国产自在现线最新 | 好大好爽好深舒服死了 | 国产亚洲精品99一区二区 | https黄视|