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 数组循环引起的思考
Jan 01 Javascript
JavaScript 设计模式 安全沙箱模式
Sep 24 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
浅谈javascript中自定义模版
Jan 29 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
Jul 11 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
Python入门篇之编程习惯与特点
2014/10/17 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
三好学生自我鉴定
2013/12/17 职场文书
社团招新策划书
2014/02/04 职场文书
《乞巧》教学反思
2014/02/27 职场文书
责任书范本
2014/08/25 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
人民检察院起诉书
2015/05/20 职场文书