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 相关文章推荐
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
学习ExtJS 访问容器对象
Oct 07 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
JS+CSS实现仿新浪微博搜索框的方法
Feb 24 Javascript
JavaScript设置表单上传时文件个数的方法
Aug 11 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
JS请求servlet功能示例
Jun 01 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
js实现点击按钮复制文本功能
Jul 20 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 Javascript
vue实现登录功能
Dec 31 Vue.js
正则表达式替换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通用分页类page.php[仿google分页]
2008/08/31 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php定界符
2014/06/19 PHP
详谈PHP编码转换问题
2015/07/28 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
常用python编程模板汇总
2016/02/12 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python 实现简单的FTP程序
2019/12/27 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
天网面试题
2013/04/07 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
大学生自我鉴定范文
2013/12/28 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
大学军训感言1000字
2014/02/25 职场文书
中式婚礼主持词
2014/03/13 职场文书
《春晓》教学反思
2014/04/20 职场文书
布达拉宫导游词
2015/02/02 职场文书
离婚被告代理词
2015/05/23 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
七年级作文之环保作文
2019/10/17 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers