javascript 中模板方法單例的實(shí)現(xiàn)方法
javascript 中模板方法單例的實(shí)現(xiàn)方法
模板方法單例
模板方法的定義:父類中定義一組操作算法骨架,將一些實(shí)現(xiàn)步驟延伸到子類中,使得子類可以不改變父類的算法結(jié)構(gòu)的同時(shí)可重新定義算法中某些實(shí)現(xiàn)步驟。
代碼塊
html部分,例如:
<div id="content"></div>
js部分,例如:
//格式化字符串方法
function fromateString(str, data) {
return str.replace(/\{#(\w+)#\}/g, function(match, key){
return typeof data[key] === undefined ? '' : data[key]
});
}
//基礎(chǔ)導(dǎo)航
var Nav = function (data) {
//基礎(chǔ)導(dǎo)航樣式模板
this.item = '<a href="{#href#}" rel="external nofollow" title="{#title#}">{#name#}</a>';
//創(chuàng)建字符串
this.html='';
for (var i = 0; i < data.length; i++) {
this.html += fromateString(this.item, data[i]);
}
return this.html;
}
//帶有信息提示信息導(dǎo)航
var NumNav = function (data) {
//消息提醒小心組件模板
var tpl = '<p>{#num#}</p>';
for (var i = data.length -1; i >= 0; i--) {
data[i].name += data[i].name + fromateString(tpl, data[i]);
}
return Nav.call(this, data);
}
//帶有鏈接地址的導(dǎo)航
var LinkNav = function (data) {
//消息提醒小心組件模板
var tpl = '<span>{#link#}</span>';
for (var i = data.length -1; i >= 0; i--) {
data[i].name += data[i].name + fromateString(tpl, data[i]);
}
return Nav.call(this, data);
}
//測(cè)試帶有信息提示的導(dǎo)航
var nav = document.getElementById('content');
nav.innerHTML = NumNav([
{
href : 'www.baidu.com',
title : '百度一下你就知道',
name : '百度',
num : 10,
link : 'www.baidu.com'
},
{
href : 'www.taobao.com',
title : '淘寶商城',
name : '淘寶',
num : 2,
link : 'www.taobao.com'
},
{
href : 'www.qq.com',
title : '騰訊首頁(yè)',
name : '騰訊',
num : 3,
link : 'www.qq.com'
}
]);
其實(shí)模板方法模式不僅僅在我們歸一化組件的時(shí)候使用 有時(shí)候創(chuàng)建頁(yè)面時(shí)也是很常用到的。通過(guò)上述代碼可以衍生出的靜態(tài)頁(yè)面的封裝以及業(yè)務(wù)邏輯的交互封裝。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- JavaScript設(shè)計(jì)模式之單例模式原理與用法實(shí)例分析
- JavaScript設(shè)計(jì)模式之單例模式簡(jiǎn)單實(shí)例教程
- JS基于設(shè)計(jì)模式中的單例模式(Singleton)實(shí)現(xiàn)封裝對(duì)數(shù)據(jù)增刪改查功能
- NodeJS設(shè)計(jì)模式總結(jié)【單例模式,適配器模式,裝飾模式,觀察者模式】
- [js高手之路]單例模式實(shí)現(xiàn)模態(tài)框的示例
- 原生Javascript和jQuery做輪播圖簡(jiǎn)單例子
- 輕松掌握J(rèn)avaScript單例模式
- 基于JavaScript實(shí)現(xiàn)單例模式
相關(guān)文章
JavaScript獲取css行間樣式,內(nèi)連樣式和外鏈樣式的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇JavaScript獲取css行間樣式,內(nèi)連樣式和外鏈樣式的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
JavaScript 解析讀取XML文檔 實(shí)例代碼
應(yīng)項(xiàng)目之需求,需用JS操作XML文檔,遂上網(wǎng)查資料,感覺(jué)這篇文章還不錯(cuò),特轉(zhuǎn)載到此地,與大家共享!2009-07-07
JavaScript判斷是否為數(shù)字的幾種方式匯總(推薦!)
有時(shí)候需要根據(jù)輸入的內(nèi)容來(lái)進(jìn)行計(jì)算,這個(gè)時(shí)候就需要判斷輸入的內(nèi)容是否是數(shù)字,下面這篇文章主要給大家介紹了關(guān)于JavaScript判斷是否為數(shù)字的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
JavaScript數(shù)據(jù)結(jié)構(gòu)中棧的應(yīng)用之表達(dá)式求值問(wèn)題詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)中棧的應(yīng)用之表達(dá)式求值問(wèn)題,詳細(xì)分析了中綴表達(dá)式、后綴表達(dá)式等概念、原理與轉(zhuǎn)換方法,以及基于后綴表達(dá)式實(shí)現(xiàn)的表達(dá)式求值相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
前端實(shí)現(xiàn)視頻文件動(dòng)畫幀圖片提取完整教程
相信很多小伙伴在一些短視頻平臺(tái)上傳視頻的時(shí)候,系統(tǒng)會(huì)自動(dòng)幫我們生成一些視頻中的畫面幀的圖片,讓我們作為視頻封面的功能,那么這些短視頻平臺(tái)是如何從視頻中抽取關(guān)鍵幀來(lái)作為封面,今天博主就帶著大家一起來(lái)探討這個(gè)問(wèn)題,感興趣的小伙伴跟著小編一起來(lái)看看吧2025-04-04

