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 多浏览器 事件大全
Mar 23 Javascript
js控制网页背景音乐播放与停止的方法
Feb 06 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
zTree插件下拉树使用入门教程
Apr 11 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
基于JavaScript实现数码时钟效果
Mar 30 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
vue子传父关于.sync与$emit的实现
Nov 05 Javascript
JS 数组基本用法入门示例解析
Jan 16 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 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开发文档 会员收费1期
2012/08/14 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
JS求平均值的小例子
2013/11/29 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
js获取ip和地区
2017/03/10 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
python字典快速保存于读取的方法
2018/03/23 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
物业保安主管岗位职责
2013/12/25 职场文书
财务科科长岗位职责
2014/03/10 职场文书
幼儿园新年寄语
2014/04/03 职场文书
工商管理自荐书
2014/07/06 职场文书
工程部部长岗位职责
2015/02/12 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android