国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript設計模式 封裝和信息隱藏(上)

2024-05-06 14:21:31
字體:
來源:轉載
供稿:網友
本文分上下兩部分,上部講基本模式(basic patterns):完全暴露法,下劃線標記法和使用閉包;下部講高級模式(Advanced Patterns),如何實現靜態方法和屬性,常量還有其他一些知識點。
  封裝是面向對象語言很基本也是很有用的特性,雖然javascript也可以稱的上是面向對象語言,但他對封裝的支持并不是很好,不像其他語言,只要使用private、protected就可以實現。但這并不是說就沒有辦法了,下面我就介紹下如何在javascript中實現封裝。
一、基本模式(basic patterns),主要包括三種方式:完全暴露法,下劃線標記法和使用閉包。(閉包是個很重要,也是很難的概念,有興趣的朋友可以去網上找資料,我博客里也轉載了別人的文章)。
  這里我們以book類作為例子,需要創建和初始化book類。
代碼如下:
// Book(isbn, title, author)
var theHobbit = new Book('0-395-07122-4', 'The Hobbit', 'J. R. R. Tolkien');
theHobbit.display(); // Outputs the data by creating and populating an HTML element.

1.完全暴露法:
創建book類可以用最傳統的構造函數方式,
代碼如下:
var Book = function(isbn, title, author) {
  if(!this.checkIsbn(isbn)) throw new Error('Book: Invalid ISBN.');
  this.isbn = isbn;
  //代碼中 || 的作用是 如果title無值,則會把'No title specified'賦給 this.title。這種方式很好用,大家可以在自己的代碼中使用。
  this.title = title || 'No title specified';
  this.author = author || 'No author specified';
}
Book.prototype = {
  //驗證isbn函數
  checkIsbn: function(isbn) {
    ...
  },
  //獲取isbn
  getIsbn: function() {
    return this.isbn;
  },
  //設置isbn
  setIsbn: function(isbn) {
    if(!this.checkIsbn(isbn)) throw new Error('Book: Invalid ISBN.');
      this.isbn = isbn;
  },
  //獲取title
  getTitle: function() {
    return this.title;
  },
  //設置title
  setTitle: function(title) {
    this.title = title || 'No title specified';
  },
  //獲取作者
  getAuthor: function() {
    return this.author;
  },
  //設置作者
  setAuthor: function(author) {
    this.author = author || 'No author specified';
  },
  //顯示函數
  display: function() {
    ...
  }
};

 代碼有點多,我在這里簡單講解下。javascript中創建類和c#,java有點不同,c#,java會把所有方法和屬性包在一個類文件里面,比如說
代碼如下:
public class book()
{
private string isbn;
public string ISBN
{
set
{
      this.isbn=value;
     }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南雄市| 乌鲁木齐县| 墨脱县| 隆化县| 沂南县| 东光县| 绩溪县| 涪陵区| 小金县| 南华县| 昭觉县| 富源县| 璧山县| 安平县| 合水县| 鹤壁市| 贵南县| 永新县| 泽库县| 喀喇沁旗| 汉阴县| 永吉县| 德庆县| 堆龙德庆县| 临沭县| 滁州市| 通许县| 鄂州市| 平顺县| 呼图壁县| 通河县| 武强县| 虞城县| 曲阳县| 从江县| 扎兰屯市| 南平市| 梅州市| 天长市| 沿河| 布尔津县|