一二三四网
您的当前位置:首页JS匿名函数类生成方式实例分析

JS匿名函数类生成方式实例分析

来源:一二三四网


本文实例讲述了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出神入化了,佩服到极致,代码清晰简洁,美观,注释恰到好处。

显示全文