緩存篇(Cache)~第二(er)回 使用(yong)static靜態成(cheng)員實現服務器端(duan)緩存(導航面包屑(xie))~續
在寫完首篇cache文章后,有些朋友給我來信(xin),希(xi)望可以(yi)(yi)使(shi)用(yong)JS的(de)(de)方(fang)法(fa)(fa)(fa)來實現這個導(dao)航功(gong)能,所以(yi)(yi),才有了這篇(pian)文章,JS與(yu)C#不同(tong)(tong),它(ta)雖然有引(yin)用(yong)類型,但它(ta)不具備(bei)一(yi)(yi)些引(yin)用(yong)類型的(de)(de)特(te)性,如(ru)它(ta)的(de)(de)方(fang)法(fa)(fa)(fa)參(can)數(shu)為對(dui)象時(shi),也是(shi)(shi)通過值傳遞(di)的(de)(de),而不是(shi)(shi)通過內存地址,而在進(jin)行導(dao)航制作時(shi),我們正是(shi)(shi)使(shi)用(yong)了引(yin)用(yong)類型的(de)(de)這個特(te)性,所以(yi)(yi),我們的(de)(de)JS方(fang)法(fa)(fa)(fa),就不能和C#相同(tong)(tong)了,如(ru)果使(shi)用(yong)其它(ta)方(fang)式(shi),如(ru),使(shi)用(yong)名稱保存在一(yi)(yi)個變量里。
下面是JS方式實現的(de)導(dao)航,希望對JS朋友(you)有些幫助
<script type="text/javascript">
//對(dui)象實體
var BannerModel = function (name, url, id, parentID) {
return {
Name: name,
Url: url,
ID: id,
ParentID: parentID,
Parent: {}
};
}
var BannerStr = "";
var Data = [new BannerModel("首頁", "/", 1, 0), new BannerModel("用戶中心", "/UserInfo", 2, 1), new BannerModel("基本信息設置", "/UserInfoSet", 3, 2)];
//找老(lao)祖(zu)宗...
function GetParent(o) {
if (o != undefined && o.ID != undefined) {
BannerStr = "<a href=" + o.Url + ">" + o.Name + "</a>" + ">" + BannerStr;
for (var i in Data) {
if (Data[i].ID == o.ParentID) {
o.Parent = Data[i];
break;
}
}
GetParent(o.Parent);
}
}
//導航工廠
var BannerFactory = {
GetTreeBanner: function (url) {
var temp = "";
BannerStr = "";
for (var i in Data) {
if (Data[i].Url == url) {
temp = Data[i];
break;
}
}
GetParent(temp);
return BannerStr;
}
}
document.write(BannerFactory.GetTreeBanner("/UserInfoSet"));
</script>
看JS生成的導航截圖