首頁  >  文章  >  web前端  >  JS匿名函數類別產生方式實例分析

JS匿名函數類別產生方式實例分析

高洛峰
高洛峰原創
2016-12-05 10:15:521006瀏覽

本文實例講述了JS匿名函數類別生成方式。分享給大家供大家參考,具體如下:

<script type="text/javascript">
var Book = (function() {
 // 私有静态属性
 var numOfBooks = 0;
 // 私有静态方法
 function checkIsbn(isbn) {
  if(isbn == undefined || typeof isbn != &#39;string&#39;) {
   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(&#39;Book: Invalid ISBN.&#39;);
   isbn = newIsbn;
  };
  this.getTitle = function() {
   return title;
  };
  this.setTitle = function(newTitle) {
   title = newTitle || &#39;No title specified&#39;;
  };
  this.getAuthor = function() {
   return author;
  };
  this.setAuthor = function(newAuthor) {
   author = newAuthor || &#39;No author specified&#39;;
  };
  // 控制对象数目,构造函数
  numOfBooks++; // Keep track of how many Books have been instantiated
         // with the private static attribute.
  if(numOfBooks > 5) throw new Error(&#39;Book: Only 5 instances of Book can be &#39;
    + &#39;created.&#39;);
  this.setIsbn(newIsbn);
  this.setTitle(newTitle);
  this.setAuthor(newAuthor);
 }
})();
// 公有静态方法
Book.convertToTitleCase = function(inputString) {
 alert(&#39;convertToTitleCase&#39;);
};
// 公有非特权方法
Book.prototype = {
 display: function() {
  alert("isbn:"+this.getIsbn()+" title:"+this.getTitle()+" author:"+this.getAuthor());
 }
};
//var theHobbit = new Book(123, &#39;&#39;, &#39;J. R. R. Tolkein&#39;); // 非字符串抛出异常
var theHobbit = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit.display();
//theHobbit.convertToTitleCase(); // Uncaught TypeError: Object #<Object> has no method &#39;convertToTitleCase&#39;
Book.convertToTitleCase(); // 输出convertToTitleCase
var theHobbit2 = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit2.display();
var theHobbit3 = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit3.display();
var theHobbit4 = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit4.display();
var theHobbit5 = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit5.display();
var theHobbit6 = new Book(&#39;1990-78sd-1092&#39;, &#39;&#39;, &#39;J. R. R. Tolkein&#39;);
theHobbit6.display(); // Uncaught Error: Book: Only 5 instances of Book can be created.
</script>

這裡已經把js出神入化了,佩服到極致,程式碼清晰簡潔,美觀,註解恰到好處。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn