JS匿名函数类生成方式实例分析


Posted in Javascript onNovember 26, 2016

本文实例讲述了JS匿名函数类生成方式。分享给大家供大家参考,具体如下:

<script type="text/javascript">
var Book = (function() {
 // 私有静态属性
 var numOfBooks = 0;
 // 私有静态方法
 function checkIsbn(isbn) {
  if(isbn == undefined || typeof isbn != 'string') {
   return false;
  }
  return true;
 }
 // 返回构造函数
 return function(newIsbn, newTitle, newAuthor) { // implements Publication
  // 私有属性
  var isbn, title, author;
  // 特权方法
  this.getIsbn = function() {
   return isbn;
  };
  this.setIsbn = function(newIsbn) {
   if(!checkIsbn(newIsbn)) throw new Error('Book: Invalid ISBN.');
   isbn = newIsbn;
  };
  this.getTitle = function() {
   return title;
  };
  this.setTitle = function(newTitle) {
   title = newTitle || 'No title specified';
  };
  this.getAuthor = function() {
   return author;
  };
  this.setAuthor = function(newAuthor) {
   author = newAuthor || 'No author specified';
  };
  // 控制对象数目,构造函数
  numOfBooks++; // Keep track of how many Books have been instantiated
         // with the private static attribute.
  if(numOfBooks > 5) throw new Error('Book: Only 5 instances of Book can be '
    + 'created.');
  this.setIsbn(newIsbn);
  this.setTitle(newTitle);
  this.setAuthor(newAuthor);
 }
})();
// 公有静态方法
Book.convertToTitleCase = function(inputString) {
 alert('convertToTitleCase');
};
// 公有非特权方法
Book.prototype = {
 display: function() {
  alert("isbn:"+this.getIsbn()+" title:"+this.getTitle()+" author:"+this.getAuthor());
 }
};
//var theHobbit = new Book(123, '', 'J. R. R. Tolkein'); // 非字符串抛出异常
var theHobbit = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit.display();
//theHobbit.convertToTitleCase(); // Uncaught TypeError: Object #<Object> has no method 'convertToTitleCase'
Book.convertToTitleCase(); // 输出convertToTitleCase
var theHobbit2 = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit2.display();
var theHobbit3 = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit3.display();
var theHobbit4 = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit4.display();
var theHobbit5 = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit5.display();
var theHobbit6 = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein');
theHobbit6.display(); // Uncaught Error: Book: Only 5 instances of Book can be created.
</script>

这里已经把js出神入化了,佩服到极致,代码清晰简洁,美观,注释恰到好处。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Jquery事件的连接使用示例
Jun 18 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
从0搭建vue-cli4脚手架
Jun 17 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 21 Javascript
正则表达式替换html元素属性的方法
Nov 26 #Javascript
js初始化验证实例详解
Nov 26 #Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 #Javascript
JS匿名函数实例分析
Nov 26 #Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 #Javascript
JS类的定义与使用方法深入探索
Nov 26 #Javascript
js控制台输出的方法(详解)
Nov 26 #Javascript
You might like
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php强制运行广告的方法
2014/12/01 PHP
Laravel下生成验证码的类
2017/11/15 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
新教师培训方案
2014/06/08 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
法律进社区活动总结
2015/05/07 职场文书
签约仪式致辞
2015/07/30 职场文书
2015年度女工工作总结
2015/10/22 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书