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_03(ExtJs Grid的简单使用)
Oct 02 Javascript
js 复制或插入Html的实现方法小结
May 19 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
js简易namespace管理器 实例代码
Jun 21 Javascript
DOM基础教程之使用DOM控制表单
Jan 20 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
js传值后台中文出现乱码的解决方法
Jun 30 Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 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
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
js的一些常用方法小结
2011/06/29 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Java及python正则表达式详解
2017/12/27 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
python3.7 的新特性详解
2019/07/25 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
数字漫画:comiXology
2020/06/13 全球购物
花店创业计划书范文
2014/02/07 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书