標籤:getname 對象 play 返回 log this new http error
類的定義
方式一
var Book = function(id, name, price){ //私人屬性,外部不能直接存取 var num = 1; //私人方法, function checkId(){}; this.getName = function(){}; this.getPrice = function(){}; this.setName = function(){}; this.setPrice = function(){}; this.id = id; this.copy = function(){}; this.setName(name); this.setPrice(price);}Book.isChinese = true;Book.resetTime = function(){ console.log(‘new time‘);}Book.prototype= { isJSBook : false, display : function(){} }var b = new Book(11, ‘JavaScript 設計模式‘, 50);console.log(b.num);console.log(b.isJSBook);console.log(b.id);console.log(b.isChinese);
方式二
var Book = (function(){ var bookNum = 0; function checkBook(name){ } //返回建構函式 return function(newId,newName,newPrice){ //私人變數 var name,price; //私人方法 function checkID(id){} //特權方法 this.getName = function(){}; this.getPrice = function(){}; this.setName = function(){}; this.setPrice = function(){}; //共有屬性 this.id = newId; //公有方法 this.copy = function(){}; bookNum++; if(bookNum>100){ throw new Error(‘我們僅出版100本書‘); } this.setName(name); this.setPrice(price); }})();Book.prototype = { //靜態公有屬性 isJSBook:false, display:function(){}}
方式三
var Book = (function() { //靜態私人變零 var bookNum = 0; //靜態私人方法 function checkBook(name){} //建立類 function _book(newId,newName,newPrice){ //私人變數 var name,price; name = newName; price = newPrice; //私人方法 function checkID(id){} //特權方法(建立的對象可以訪問) this.getName = function(){return name;}; this.getPrice = function(){return price;}; this.setName = function(mingcheng){name = mingcheng;}; this.setPrice = function(){}; //公有屬性(對象可以訪問) this.id = newId; //公有方法(對象可以訪問) this.copy = function(){}; bookNum++; if(bookNum>100){ throw new Error(‘我們僅出版100本書‘); } //構造器 this.setName(name); this.setPrice(price); } //構造原型 _book.prototype = { //靜態公有屬性 isJSBook: false, //靜態公有方法 display:function(){ return ‘hello world‘} }; return _book;})();var book = new Book(10,‘javascript‘,100);console.log(book);console.log(book.isJSBook);console.log(book.getName());console.log(book.id);console.log(book.getPrice());book.setName(‘test01‘);console.log(book.getName());console.log(book.display());
測試環境node.js 版本8.10.0
有著作權問題請留言,或加我qq362601125
參考列表
1.《JavaScript設計模式》作者張榮銘
JavaScript 物件導向的編程(二) 類的封裝