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 相关文章推荐
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
Aug 11 Javascript
jQuery密码强度验证控件使用详解
Jan 05 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
从零开始最小实现react服务器渲染详解
Jan 26 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
el-select 下拉框多选实现全选的实现
Aug 02 Javascript
vue服务端渲染操作简单入门实例分析
Aug 28 Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 Javascript
vue实现修改图片后实时更新
Nov 14 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 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
2009/06/29 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
JS获取URL中的参数数据
2013/12/05 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
重命名批处理python脚本
2013/04/05 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python如何制作缩略图
2019/04/30 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
python 实现单通道转3通道
2019/12/03 Python
铭立家具面试题
2012/12/06 面试题
记者岗位职责
2014/01/06 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
副处级干部考察材料
2014/05/17 职场文书
2015年护士节慰问信
2015/03/23 职场文书
植树节新闻稿
2015/07/17 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python