博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript设计模式: 对象创建
阅读量:6248 次
发布时间:2019-06-22

本文共 1017 字,大约阅读时间需要 3 分钟。

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

你可能感兴趣的文章
HTML DOM 之 DOM对象:Document Object Model (文档对象模型)
查看>>
【网络编程】大端模式和小端模式(大头序和小头序)
查看>>
windows 2012添加桌面图标
查看>>
Kubernetes部分Volume类型介绍及yaml示例--NFS(网络数据卷)
查看>>
我的友情链接
查看>>
JNA调用的参数结构体内含二维数组及结构体内含结构体数组的解决办法
查看>>
C语言中的选择排序
查看>>
深入理解CNN的细节
查看>>
centos 6.5安装vncserver 并开启远程桌面
查看>>
在RHEL上配置epel的yum源及其他开源YUM源
查看>>
Git的学习之路02 Git的工作流程、工作区、暂存区、版本库及创建版本库
查看>>
CC430F6137 芯片上集成的外设寄存器地址<-->cc430f6137.cmd
查看>>
Ubuntu14.04 LTS下安装Composer
查看>>
tomcat session会话复制
查看>>
Spring 获取当前web的根路径
查看>>
根据EventID邮件通知并发送详细日志信息
查看>>
mybatis deal with empty result list. 查询结果为empty。
查看>>
Oracle中null的使用详解
查看>>
HTML --URL及URL字符编码
查看>>
java --关注/取消关注
查看>>