1

プロトタイプオブジェクトを調べていましたが、次の点について少し混乱しています。

//my constructor function
function Circle(r) { 
    this.radius = r;
    this.PI = 3.14;
}

function areaCalculator() {
    this.area = this.PI * this.radius * this.radius;
}

 function circumferenceCalculator() {
    this.circumference = 2* this.PI * this.radius;
}

関数はオブジェクトであり、prototypeというプロパティがあるため、このプロトタイプオブジェクトにプロパティとメソッドを追加できます。これらは、関数コンストラクターを使用して作成するすべてのカスタムオブジェクトで自動的に使用できます。

Circle.prototype.areaCalculator = areaCalculator; //adding function
Circle.prototype.color = "Red"; //adding property

var circle1 = new Circle(5);
circle1.areaCalculator();
console.log(circle1.radius);//5
console.log(circle1.area); //78.5
console.log(circle1.color);//Red

私が正しく理解していれば、Circleを使用するすべてのオブジェクトは、明示的に設定されていない限り、同じ色変数を参照します。これは正しいです?

また、プロトタイプを使用せずに以下のようなことを行うとはどういう意味ですか

Circle.circumferenceCalculator = circumferenceCalculator;
Circle.color = "Red";

上記の2つのステートメントは正しいですか?

4

2 に答える 2