JavaScriptの擬似クラスでメソッドをオーバーライド

擬似クラスから生成されたオブジェクトはコンストラクタ関数のprototypeの参照を持っているので、クラスのメソッドのような使い方ができます。

// コンストラクタ関数
var Car = function (color) {this.color = color; return this;}
// undefined
Car.prototype.getColor = function (){return this.color;}
// (){return this.color;}

この場合、Carで生成されたオブジェクトはgetColorメソッドを呼び出すことができます。


var redCar = new Car("red"); // undefined redCar.getColor() // "red" redCar.getColor = function (){return "this car is " + this.color;} // (){return "this car is " + this.color;}

このようにすると、オブジェクトにメソッドを持たせることはできます。

オブジェクト自身がメソッドを持っている場合は、プロトタイプのなかを探さないので、オーバーライドのようなことができます。


redCar.getColor() // "this car is red" var blueCar = new Car("blue"); // undefined blueCar.getColor() // "blue"