JS匿名函數(shù)類(lèi)生成方式實(shí)例分析
本文實(shí)例講述了JS匿名函數(shù)類(lèi)生成方式。分享給大家供大家參考,具體如下:
<script type="text/javascript">
var Book = (function() {
// 私有靜態(tài)屬性
var numOfBooks = 0;
// 私有靜態(tài)方法
function checkIsbn(isbn) {
if(isbn == undefined || typeof isbn != 'string') {
return false;
}
return true;
}
// 返回構(gòu)造函數(shù)
return function(newIsbn, newTitle, newAuthor) { // implements Publication
// 私有屬性
var isbn, title, author;
// 特權(quán)方法
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';
};
// 控制對(duì)象數(shù)目,構(gòu)造函數(shù)
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);
}
})();
// 公有靜態(tài)方法
Book.convertToTitleCase = function(inputString) {
alert('convertToTitleCase');
};
// 公有非特權(quán)方法
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>
這里已經(jīng)把js出神入化了,佩服到極致,代碼清晰簡(jiǎn)潔,美觀,注釋恰到好處。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專(zhuān)題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫(huà)特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- js 數(shù)組克隆方法 小結(jié)
- javascript克隆對(duì)象深度介紹
- js獲取和設(shè)置屬性的方法
- 顯示js對(duì)象所有屬性和方法的函數(shù)
- js數(shù)組循環(huán)遍歷數(shù)組內(nèi)所有元素的方法
- js數(shù)組與字符串的相互轉(zhuǎn)換方法
- JS 創(chuàng)建對(duì)象(常見(jiàn)的幾種方法)
- JS匿名函數(shù)實(shí)例分析
- JS 面向?qū)ο笾衿娴膒rototype
- JS面向?qū)ο缶幊讨畬?duì)象使用分析
- JS面向?qū)ο缶幊虦\析
- JS克隆,屬性,數(shù)組,對(duì)象,函數(shù)實(shí)例分析
相關(guān)文章
前端實(shí)現(xiàn)水印功能的幾種方法及優(yōu)缺點(diǎn)
這篇文章主要介紹了前端開(kāi)發(fā)中實(shí)現(xiàn)網(wǎng)頁(yè)或圖像水印的六種方法,包括使用CSS背景圖、HTML5?Canvas、SVG、圖片處理庫(kù)、HTML?DOM元素以及后端生成,每種方法都有其優(yōu)缺點(diǎn),適用于不同的場(chǎng)景,需要的朋友可以參考下2025-01-01
JavaScript是否可實(shí)現(xiàn)多線程 深入理解JavaScript定時(shí)機(jī)制
JavaScript的setTimeout與setInterval是兩個(gè)很容易欺騙別人感情的方法,因?yàn)槲覀冮_(kāi)始常常以為調(diào)用了就會(huì)按既定的方式執(zhí)行, 我想不少人都深有同感,2009-12-12
Javascript實(shí)現(xiàn)數(shù)組中的元素上下移動(dòng)
這篇文章主要給大家介紹了Javascript實(shí)現(xiàn)數(shù)組中的元素上下移動(dòng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04
requireJS模塊化實(shí)現(xiàn)返回頂部功能的方法詳解
這篇文章主要介紹了requireJS模塊化實(shí)現(xiàn)返回頂部功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了requireJS的使用步驟及返回頂部功能的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10

