創建一個命名空間對象:如果你使用YUI,可 " /> asian4you裸模,鸭子玩富婆流白浆视频,久久99re2在线视频精品

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

Javascript模塊模式分析

Douglas Crockford已經傳授了一個有用的單例模式(singleton pattern)實現此規則,我認為他的模式有益于你基于YUI的那些應用。Douglas叫它模塊模式(module pattern)。它是如下工作的:

創建一個命名空間對象:如果你使用YUI,可以用YAHOO.namespace()方法: YAHOO.namespace("myProject");這分配了一個空的myProject對象,是YAHOO的一個成員(如 果myProject已存在的話,則不會被覆蓋)。現在我們可以開始添加YAHOO.myProject的成員。 
對你的命名空間對象分配一個匿名函數返回值: 
YAHOO.myProject.myModule = function () {
return  {
  myPublicProperty: "我作為YAHOO.myProject.myModule.myPublicProperty被訪問。";
  myPublicMethod: function () {
    YAHOO.log("我作為YAHOO.myProject.myModule.myPublicMethod被訪問。");
  }
};
}(); // 這個括號導致匿名函數被執行且返回

注意有閉合大括號和緊接著的括號()的最后一行―這種符號導致了匿名函數的立即執行,返回包含myPublicProperty和myPublicMethod的對象。只要這個匿名函數一返回,返回對象就作為YAHOO.myProject.myModule被訪問。 

在匿名函數中,在返回語句前加入“私有”方法和變量。到目前為止,我們只是將myPublicProperty和myPublicMethod直接分配到YAHOO.myProject.myModule中。此外,當我們在返回語句之前放置一些代碼時,這個模式還支持被增加的效用。 
YAHOO.myProject.myModule = function () {
//“私有”變量:
var myPrivateVar = “我僅能在YAHOO.myProject.myModule內被訪問。”;
//私有方法:
var myPrivateMethod = function () {
    YAHOO.log(”我僅能在YAHOO.myProject.myModule內被訪問。”);
}

return  {
    myPublicProperty: “我作為YAHOO.myProject.myModule.myPublicProperty能被訪問。”
    myPublicMethod: function () {
    YAHOO.log(”我作為YAHOO.myProject.myModule.myPublicMethod能被訪問。”);
    //在myProject,我能訪問私有的變量和方法
    YAHOO.log(myPrivateVar);
    YAHOO.log(myPrivateMethod());
    //myPublicMethod的原生作用域是myProject,我們可以用“this”來訪問公共成員。
    YAHOO.log(this.myPublicProperty);
    }
};
}();
在上面的代碼中,我們從一個匿名函數返回有兩個成員的一個對象。在YAHOO.myProject.myModule內部,可以分別用this.myPublicProperty和this.myPublicMethod來訪問。在YAHOO.myProject.myModule外部,公共成員可以用YAHOO.myProject.myModule.myPublicProperty和YAHOO.myProject.myModule.myPublicMethod來訪問。
私有變量myPrivateProperty和myPrivateMethod只能被匿名函數本身或返回對象的成員訪問。盡管匿名函數會立即執行和終止,但它們依然是保留著,憑借閉包(closure)的力量――通過一個函數的局部變量在這個函數返回后是保留的規則。只要 YAHOO.myProject.myModule需要它們,我們的兩個私有變量就不會被銷毀。 

實踐這個模式。讓我們來看看這個模式的一個常見應用案例。假設你有一個列表,列表上的一些項可以被拖拽。應用拖拽的項上有拖拽的CSS類。 
<!--這個腳本文件包含所有的YUI實用程序-->
  <script type="text/Javascript"
src="http://yui.yahooapis.com/2.2.2/build/utilities/utilities.js"></script>
<ul id="myList">
   <li class="draggable">一項</li>
   <li>二項</li> <!--二項將不能被拖拽-->
   <li class="draggable">三項</li>
   </ul>
<script>
  YAHOO.namespace("myProject");
  YAHOO.myProject.myModule = function () {
 //YUI實用程序的私有簡寫引用:
  var yue = YAHOO.util.Event,
  yud = YAHOO.util.Dom;
 //私有方法
  var getListItems = function () {
 // 注意這個地方使用其他的私有變量,包括"yud"YAHOO.util.Dom的簡寫:
  var elList = yud.get("myList");
  var aListItems = yud.getElementsByClassName(
  "draggable", //得到僅有CSS類"draggable"的項
  "li", //僅返回列表項
  elList //限定搜索改元素的子
  );
  return aListItems;
  };
 //這個放回的對象將變成YAHOO.myProject.myModule:
  return  {
 aDragObjects: [], //可對外訪問的,存儲DD對象
 init: function () {
  //直到DOM完全加載好,才實現列表項可拖拽:
  yue.onDOMReady(this.makeLIsDraggable, this, true);
  },
 makeLIsDraggable: function () {
  var aListItems = getListItems(); //我們可以拖拽的那些元素
  for (var i=0, j=aListItems.length; i<j; i++) {
  this.aDragObjects.push(new YAHOO.util.DD(aListItems[i]));
  }
  }
 };
  }();
//上面的代碼已經執行,所以我們能立即訪問init方法:
  YAHOO.myProject.myModule.init();
  </script>
這是一個簡單的例子,特意寫的詳細一些――如果按照這種方式做,我們無疑能把它寫的更緊湊。當項目變得更加復雜和它的API增加,這個模式縮放的很好。通過這種方式,它避免了全局命名空間,提供了對外的可以訪問的API方法,支持受保護或“私有”的數據和方法。 

[1]原文:《a Javascript module pattern》。這是在YUI blog上的,有的地方可能打不開,可以搜一下英文的轉載或者利用搜索引擎的緩存也能看。 

[2]《A JavaScript Module Pattern - JavaScript的一種模組模式》這是別人的翻譯,參考了不少,不過感覺挺不方便看的,這是我翻譯的這篇文章的一個原因,當然最主要的原因是這篇文章算是學習YUI的最基礎的文章了,整個YUI的模塊模式都基于此。 

JavaScript技術Javascript模塊模式分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 99久久人妻无码精品系列性欧美 | 视频一区在线免费观看 | 超碰在线 视频 | 真实国产熟睡乱子伦对白无套 | 色欲天天天综合网免费 | 久久国产精品久久国产精品 | 久久人妻熟女中文字幕AV蜜芽 | 亚洲 日韩 色 图网站 | 国产精品无码久久久久不卡 | 九九久久精品 | 99久久婷婷国产综合精品青草 | 国产精品美女久久久网站动漫 | 男女牲交全过程免费播放 | 草莓西瓜樱桃香蕉直播视频 | 麻豆人妻换人妻X99 麻豆区蜜芽区 | adc网址在线观看 | 不卡一区二区高清观看视频 | 无码人妻精品一区二区蜜桃色欲 | 99RE6这里只有精品国产AV | 亚洲日韩乱码人人爽人人澡人 | 在线国产a不卡 | 午夜亚洲国产理论片二级港台二级 | 色多多污污下载 | 午夜想想爱 | 久久婷婷国产五月综合色啪最新 | 国产成人无码视频一区二区三区 | 精品性影院一区二区三区内射 | 李丽莎与土豪50分钟在线观看 | 亚洲 欧美 清纯 校园 另类 | 欧美一道本一区二区三区 | YELLOW在线观看高清视频免费 | 老师机影院 | 白丝女仆被强扒内裤 | 欧美日韩永久久一区二区三区 | 男人脱女人衣服吃奶视频 | 97精品国产自产在线观看永久 | 嫩草视频在线观看免费 | 男人桶女人j的视频在线观看 | 老司机午夜影院试看区 | 古代荡女丫鬟高H辣文纯肉 姑娘视频日本在线播放 | 国产免费阿v精品视频网址 国产免费69成人精品视频 |