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

相关文章
相关标签/搜索