JavaScript-クラス

5719 ワード

JavaScriptのクラスは、実はFunctionによって実現されます.私たちは文字の量やコンストラクションによってオブジェクトを作成しますが、すべては特定のオブジェクトに属性と値を与えます.もし私たちが複数のオブジェクトを持っているなら、彼らの属性は同じです.値が違っているだけで、多くの重複した語句を書きます.
以下はコンストラクタメソッドのクラスを作成します.
function className (prop_1, prop_2, prop_3) {
this.prop1 = prop_1;
this.prop2 = prop_2;
this.prop3 = prop_3;
}
上のクラスがあれば、クラスのために実例を作成できます.
var obj_1 = new className(v1, v2, v3)
var obj_2 = new className(v1, v2, v3)
私たちはクラスに方法を追加することもできます.実はFunctionのFunctionです.
function className (prop_1, prop_2, prop_3) {
this.prop1 = prop_1;
this.prop2 = prop_2;
this.prop3 = prop_3;
this.func = function new_meth (property) {
//coding here
}
}
 属性アクセスフィールド:
JavaScriptでは、オブジェクトの属性はデフォルトではグローバルであり、つまり、オブジェクトの内外で直接にこの属性にアクセスすることができます.上記の例では、this.prop 1、this.prop 2、this.prop 3はグローバル属性です.
プライベート属性はどう定義しますか?varを使うと、以下の例では、priceはプライベート属性になります.
function Car( listedPrice, color ) {
var price = listedPrice;
this.color = color;
this.honk = function() {
console.log("BEEP BEEP!!");
};
}
プライベート属性にアクセスしたいなら、このプライベート属性を返す方法をオブジェクト内に追加してもいいです.この方法はオブジェクト内にあるので、オブジェクトのプライベート属性にアクセスできます.この方法を外部に呼び出すと、このプライベート属性にアクセスできます.この方法では、thisを使ってはいけません.上記のようにpriceにアクセスすれば、対象に方法を追加できます.
    this.getPrice = function() {
//return price here!
return price;
継承:
以下の構文継承を使用します.
ElectricCar.prototype = new Car();
instance Ofを使用して、オブジェクトの相続を確認し、trueまたはfalseに戻ります.
myElectricCar instanceof Car
引き継ぎ後のオブジェクトに方法を追加します.
//               
function ElectricCar( listedPrice ) {
this.electricity=100;
var price = listedPrice;
}

// Car
ElectricCar.prototype = new Car();

//
ElectricCar.prototype.refuel = function(numHours) {
this.electricity =+ 5*numHours;
};
プロトタイプオブジェクトの値または方法を書き換えます.プロトタイプオブジェクトを継承すると、プロトタイプの値と方法を継承します.しかし、ある時は、私たちの対象の値や方法が違ってくるかもしれません.この時は、元のオブジェクトの値や方法を書き換えることで、新しいオブジェクトの内容を変えることができます.
function Car( listedPrice ) {
var price = listedPrice;
this.speed = 0;
this.numWheels = 4;

this.getPrice = function() {
return price;
};
}

Car.prototype.accelerate = function() {
this.speed += 10;
};

function ElectricCar( listedPrice ) {
var price = listedPrice;
this.electricity = 100;
}
ElectricCar.prototype = new Car();

// accelerate
ElectricCar.prototype.accelerate = function() {
this.speed += 20;
};
// decelerate
ElectricCar.prototype.decelerate = function(secondsStepped) {
this.speed -= 5*secondsStepped;
};

myElectricCar = new ElectricCar(500);

myElectricCar.accelerate();
console.log("myElectricCar has speed " + myElectricCar.speed);
myElectricCar.decelerate(3);
console.log("myElectricCar has speed " + myElectricCar.speed);