小さな例を書いてみましょう:
ステップ 1: 「携帯電話クラス」を作成する
var MobilePhone = (function(){
……
})()
ステップ 2:このクラスについて考えてみましょう。これらのクラスのプライベート属性が必要です。ここで定義したいのは、インスタンスからの携帯電話の数です。
var MobilePhone = (function(){
//プライベート属性
var count = 0; // の数を表しますmobile Phones
})()
ステップ 3: コンストラクターを作成します。これは、属性やメソッドの初期化など、インスタンスのインスタンス化時に生成される新しいオブジェクトの初期化です。 ; この例では、各携帯電話は color、size、Price 属性を持ちます。このコンストラクターもクロージャであるため、count にアクセスでき、count の値は長期間メモリに保存されます。参照が存在します)
var MobilePhone = (function(){
//プライベート属性
var count = 0; //携帯電話の数を表す
//コンストラクター関数
var creatphone = function(color,size, Price){
this._size = size; //携帯電話のサイズ
this._price = 価格
this.index = count;インデックス、どの携帯電話アイコンが作成されたか
、サイズ、サイズ、色、価格も表示できます。
ここでの共通メソッドは「プロトタイプ オブジェクト」に配置する必要があります。
1. このコンストラクターによってインスタンス化されたすべてのオブジェクト、つまり作成された携帯電話は、「プロトタイプ オブジェクト」内のメソッドを使用できます。
2. コンストラクターに配置すると、携帯電話オブジェクトがインスタンス化されるたびに、多数の繰り返しメソッドが生成され、メモリを占有します。
3. "constructor":creatphone の説明:
creatphone.prototype ={...} は前のプロトタイプ オブジェクトへの参照を完全に上書きするためです。プロトタイプオブジェクトをコンストラクターに関連付けるために、属性 "constructor":creatphone が設定されます。
コードをコピーします
コードは次のとおりです。以下のように:
count ;
count ;
this._color = color; // 電話の色
= 価格; of the mobile Phone
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;
},
//携帯電話の価格を取得する
" : function(){
return this._price;
},
//携帯電話の価格を設定
"setPrice" : function(price){
this._price = 価格
}
}
})()
ステップ 5: 特権メソッド、つまり、クラスのプライベート変数にアクセスできるメソッドが必要です。インスタンスから出てくる携帯電話オブジェクトの数です
コードをコピーします
コードは次のとおりです:
var MobilePhone = (function(){
//Private attribute
var count = 0;//Represents the number of mobile phones
var index = 0;//Represents the index of the mobile phone
//Constructor function
var creatphone = function(color, size, price){
count; /The size of the mobile phone
this._price = price; //The price of the mobile phone
this.index = count; //The index of the mobile phone is the number of mobile phone icons created
} ///Public method, Stored in the prototype object
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
}
}
//Privileged method
creatphone.get_count_index = function(){
return count
}
return creatphone;
})()
Use a mobile phone class encapsulated above to test
var anycall = new MobilePhone(); //Instance a Samsung mobile phone object
var HTC = new MobilePhone(); //Instance an HTC mobile phone object
var Iphone4s = new MobilePhone(); //Instance an Apple phone 4S mobile phone object
console.log("Samsung is:" anycall.index "station"); //FF's console outputs the number of the Samsung mobile phone object was created, that is, the index;
console.log ("HTC is the number:" HTC.index "station"); //FF's console outputs the number of the HTC phone object was created, that is, the index;
console.log("Iphone4s is the number:" Iphone4s. index "station"); //FF's console outputs which iPhone 4S mobile phone object was created, that is, the index;
console.log("A total of "MobilePhone.get_count_index() "mobile phones") ; //FF's console output shows how many mobile phones have been created in total;
console.log(anycall.constructor === MobilePhone); //Whether the constructor in the original image of the instanced object still points to MobilePhone
The results are as follows, absolutely correct: