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 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 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学习笔记之三 数据库基本操作
2011/01/17 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
Python绑定方法与非绑定方法详解
2017/08/18 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
pytorch forward两个参数实例
2020/01/17 Python
python批量生成条形码的示例
2020/10/10 Python
财务助理岗位职责
2013/11/10 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
读群众路线心得体会
2014/03/07 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
安全教育月活动总结
2014/05/05 职场文书
新农村建设汇报材料
2014/08/15 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书