JavaScript设计模式: 对象创建

本文介绍了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. 命名约定型:以下划线来表示方法或属性的私有性

  下划线的这种用法是一个众所周知的命名规范,它表明一个属性(或方法)仅供对象内部使用,直接访问或设置它可能会导致意想不到的后果。这有助于防止程序员对它的无意使用,却不能防止对它的有意使用。后一个目标的实现需要有真正私有性的方法。

3. 使用闭包来创建真正的私有成员

转载于:https://www.cnblogs.com/derek-hu/p/4034601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值