JavaScript設計模式: 對象建立

1. 門戶大開型程序員

  它的全部屬性和方法都是公開的,可訪問的,這些公用的屬性須要使用this關鍵字來建立。閉包

  優勢:方便派生子類和進行單元測試,建立這樣的對象不須要深刻理解做用域或調用鏈的概念。單元測試

  缺點:雖然咱們爲設置屬性提供了賦值哭器方法,但那些屬性仍然是公開的,能夠被直接設置,而在這種方案中卻沒法阻止這種行爲。無論是出於有間仍是無心,isbn均可能被設置爲一個無效值。測試

var Book=function(isbn, title, author){
    this.setIsbn(isbn);
    this.setTitle(title);
    this.setAuthor(author);
}
Book.prototype={
    checkIsbn: function(isbn){},
    getIsbn: function(){return this.isbn;},
    setIsbn: function(isbn){
        if(!this.checkIsbn(isbn)) throw new Error('Book: Invalid ISBN');
        this.isbn=isbn;
    }
    getTitle: function(){return this.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(){}
}

2. 命名約定型:如下劃線來表示方法或屬性的私有性this

  下劃線的這種用法是一個衆所周知的命名規範,它代表一個屬性(或方法)僅供對象內部使用,直接訪問或設置它可能會致使意想不到的後果。這有助於防止程序員對它的無心使用,卻不能防止對它的有意使用。後一個目標的實現須要有真正私有性的方法。spa

3. 使用閉包來建立真正的私有成員prototype

相關文章
相關標籤/搜索