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 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
JS 控制小数位数的实现代码
Aug 02 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
react native带索引的城市列表组件的实例代码
Aug 08 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 Javascript
对layui初始化列表的CheckBox属性详解
Sep 13 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
JavaScript Array.flat()函数用法解析
Sep 02 Javascript
在vue中axios设置timeout超时的操作
Sep 04 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
fgetcvs在linux的问题
2012/01/15 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
python函数形参用法实例分析
2015/08/04 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
python有几个版本
2020/06/17 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
SQL Server面试题
2013/04/04 面试题
人事行政主管岗位职责
2013/12/22 职场文书
建议书格式
2015/02/04 职场文书
横店影视城导游词
2015/02/06 职场文书
2015年环保局工作总结
2015/05/22 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Log4j.properties配置及其使用
2021/08/02 Java/Android
详解Vue的列表渲染
2021/11/20 Vue.js
JavaScript流程控制(循环)
2021/12/06 Javascript
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
Python中的 enumerate和zip详情
2022/05/30 Python