The first step: Make a "mobile phone class"
var MobilePhone = (function(){ ………… })()
The second step: Consider this class and what private attributes of the class are needed, here What I want to define is the number of mobile phones that come out of the instance
var MobilePhone = (function(){ //私有属性 var count = 0; //代表手机的数量 })()
Step 3: Create a constructor, which is an initialization of the new image generated when the instance is created , such as initialization of attributes and methods; in this example, each mobile phone will have color, size, and price attributes. The constructor here is also a closure, so count can be accessed, and the value of count will be stored in memory for a long time ( As long as there is a reference)
var MobilePhone = (function(){ //私有属性 var count = 0; //代表手机的数量 //构造函数 var creatphone = function(color,size,price){ count++; this._color = color; //手机的颜色 this._size = size; //手机的大小 this._price = price; //手机的价格 this.index = count; //手机索引,是第几台创建的手机手象 } })()
Step 4: Common methods:
That is, a method that can be used by all mobile phone objects from the instance. The mobile phone should be able to be changed here Price, color, size, size, color, price can also be displayed.
The common methods here should be placed in the "prototype object":
1. All objects that are instantiated by this constructor, that is, the mobile phones created, can use the "prototype object" method in.
2. If placed in the constructor, then every time a mobile phone object is instantiated, a bunch of repeated methods will be generated, occupying memory.
3."constructor":creatphone explanation:
Because creatphone.prototype ={...} quite overwrites the reference to the previous prototype object. In order to associate the prototype object with the constructor, "constructor":creatphone, this attribute is set.
var MobilePhone = (function(){ //私有属性 var count = 0;//代表手机的数量 //构造函数 var creatphone = function(color,size,price){ count++; this._color = color; //手机的颜色 this._size = size; //手机的大小 this._price = price; //手机的价格 this.index = count; //手机索引,是第几台创建的手机手象 } //公有方法,存放在原型对象中 creatphone.prototype = { "constructor":creatphone, //获取手机颜色 "getColor" : function(){ return this._color; }, //设置手机颜色 "setColor" : function(color){ this._color = color; }, //获取手机大小 "getSize" : function(){ return "width:"+this._size.width + " height:" + this._size.height; }, //设置手机大小 "setSize" : function(size){ this._size.width = size.width; this._size.height = size.height; }, //获取手机价格 "getPrice" : function(){ return this._price; }, //设置手机价格 "setPrice" : function(price){ this._price = price } } })()
Step 5: Privileged method, that is, required There is a method to access private variables of a class. It is how many mobile phone objects come out of the instance
var MobilePhone = (function(){ //私有属性 var count = 0;//代表手机的数量 var index = 0;//代表手机的索引 //构造函数 var creatphone = function(color,size,price){ count++; this._color = color; //手机的颜色 this._size = size; //手机的大小 this._price = price; //手机的价格 this.index = count; //手机索引,是第几台创建的手机手象 } //公有方法,存放在原型对象中 creatphone.prototype = { "constructor":creatphone, "getColor" : function(){ return this._color; }, "setColor" : function(color){ this._color = color; }, "getSize" : function(){ return "width:"+this._size.width + " height:" + this._size.height; }, "setSize" : function(size){ this._size.width = size.width; this._size.height = size.height; }, "getPrice" : function(){ return this._price; }, "setPrice" : function(price){ this._price = price } } //特权方法 creatphone.get_count_index = function(){ return count } return creatphone; })()
Use a mobile phone class encapsulated above to test
var anycall = new MobilePhone(); //实例一个三星手机对象 var HTC = new MobilePhone(); //实例一个HTC手机对象 var Iphone4s = new MobilePhone(); //实例一个苹果4S手机对象 console.log("三星是第:"+anycall.index+"台"); //FF的控制台输出三星手机对象是第几台创建的,即索引; console.log("HTC是第:"+HTC.index+"台"); //FF的控制台输出HTC手机对象是第几台创建的,即索引; console.log("Iphone4s是第:"+Iphone4s.index+"台"); //FF的控制台输出个苹果4S手机对象是第几台创建的,即索引; console.log("总共造出了"+MobilePhone.get_count_index()+"手机"); //FF的控制台输出总共创建了几台手机; console.log(anycall.constructor === MobilePhone); //实例出来的对象,的原形象中的constructor,是否还指向MobilePhone
More object-oriented Javascript--encapsulation For related articles, please pay attention to the PHP Chinese website!