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 相关文章推荐
用于自动添加Digg This!按钮的JavaScript
Dec 23 Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 Javascript
二级域名或跨域共享Cookies的实现方法
Aug 07 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
js实现音频控制进度条功能
Apr 01 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 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
德生PL330测评
2021/03/02 无线电
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
Python中endswith()函数的基本使用
2015/04/07 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python中的global关键字的使用方法
2019/08/20 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
python 装饰器重要在哪
2021/02/14 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
自荐信如何制作?
2014/02/21 职场文书
继承公证书
2014/04/09 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2015年征兵工作总结
2015/07/23 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
OpenCV实现反阈值二值化
2021/11/17 Java/Android
Go语言测试库testify使用学习
2022/07/23 Golang