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 相关文章推荐
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
Nov 24 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
JS函数验证总结(方便js客户端输入验证)
Oct 29 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
Nov 29 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
js函数调用的方式
May 06 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 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
Terran魔法科技
2020/03/14 星际争霸
PHP+MySQL 制作简单的留言本
2009/11/02 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
三年级学生评语
2014/04/23 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书