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 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
在js中单选框和复选框获取值的方式
Nov 06 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
详解AngularJS验证、过滤器、指令
Jan 04 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 Javascript
关于layui导航栏不展示下拉列表的解决方法
Sep 25 Javascript
微信小程序修改数组长度的问题的解决
Dec 17 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 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中用数组的方法设置cookies
2011/04/21 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
多个应用共存的Django配置方法
2018/05/30 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python如何保证输入键入数字的方法
2019/08/23 Python
浅谈python锁与死锁问题
2020/08/14 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
酒店节能减排方案
2014/05/26 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
百年孤独读书笔记
2015/06/29 职场文书
获奖感言怎么写
2015/07/31 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
电工实训心得体会
2016/01/14 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书