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 相关文章推荐
JQuery each()嵌套使用小结
Apr 18 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
javascript生成大小写字母
Jul 03 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
JS中数组重排序方法
Nov 11 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
微信小程序文字显示换行问题
Jul 28 Javascript
express中static中间件的具体使用方法
Oct 17 Javascript
JS运算符简单用法示例
Jan 19 Javascript
详解JavaScript匿名函数和闭包
Jul 10 Javascript
Vue使用轮询定时发送请求代码
Aug 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
php 无法载入mysql扩展
2010/03/12 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
PHP return语句的另一个作用
2014/07/30 PHP
Document 对象的常用方法
2009/07/31 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
python中import学习备忘笔记
2017/01/24 Python
Python中模块string.py详解
2017/03/12 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
详解python中的lambda与sorted函数
2020/09/04 Python
联想台湾官网:Lenovo TW
2018/05/09 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
成教自我鉴定
2013/10/27 职场文书
医学生自荐信
2013/12/03 职场文书
实习心得体会
2014/01/02 职场文书
副总经理任命书
2014/06/05 职场文书
病人慰问信范文
2015/02/15 职场文书
新课程改革心得体会
2016/01/22 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
入党申请书怎么写?
2019/06/21 职场文书
爱国之歌(8首)
2019/09/29 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python