类的定义
方式一
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设计模式》作者张荣铭
原文地址:https://www.cnblogs.com/mengjianzhou/p/8571503.html
时间: 2024-11-07 15:35:56