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 相关文章推荐
js局部刷新页面时间具体实现
Jul 04 Javascript
详解javascript中原始数据类型Null和Undefined
Dec 17 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
详解js中==与===的区别
Jan 08 Javascript
js实现自定义进度条效果
Mar 15 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
Webpack中SplitChunksPlugin 配置参数详解
Mar 24 Javascript
JavaScript console的使用方法实例分析
Apr 28 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
Jun 11 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
jquery json 实例代码
2010/12/02 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python3安装Scrapy的方法步骤
2017/11/23 Python
Python检查ping终端的方法
2019/01/26 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
秋季运动会通讯稿
2014/01/24 职场文书
大家检讨书5000字
2014/02/03 职场文书
大学迎新标语
2014/06/26 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
2014年个人售房协议书
2014/10/30 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
小鞋子观后感
2015/06/05 职场文书
关爱空巢老人感想
2015/08/11 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸