最近私はJavascriptの学習を開始し、いくつかの重要な概念について私の頭を覆そうとしています。これまでの私の理解によれば、Javascriptにはクラスがなく、クラスの代わりにコンストラクタ関数を使用してオブジェクトの青写真を作成します。例:私たちは、そのクラスのオブジェクトのための青写真を作成するクラスを持っているので、JavaScriptのコンストラクタ関数とTypescriptクラス
// javascript code
var Car = function() {
// this is a private variable
var speed = 10;
// these are public methods
this.accelerate = function(change) {
speed += change;
};
this.decelerate = function() {
speed -= 5;
};
this.getSpeed = function() {
return speed;
};
};
// typescript code
class Car {
public speed: number = 10;
public acceleration(accelerationNumber: number): void {
this.speed += accelerationNumber;
}
public decelerate(decelerateNumber: number): void {
this.speed += decelerateNumber;
}
public getSpeed(): number {
return this.speed;
}
}
上記の活字体コードは、はるかに理にかなっています。しかし、Javascriptでは、この青写真は関数で作成されています。したがって、Javascriptでのコンストラクタ関数の意味は、クラスがTypescript/Java/etcで行うことと同じことです。
これらの2つは完全に同等ではありません。 Javascriptのバージョンは 'prototype'を使ってメソッドを定義し、' speed.'を 'this.speed'に置くべきです。 – deceze
はい。あなたの "クラス"はint function(){}に変換され、newというキーワードで呼び出されます。これは文法砂糖のようなものです。しかし、ES6のクラスでは、標準(砂糖としても)として来るでしょう。 https://googlechrome.github.io/samples/classes-es6/ – Vitalii
「Javascriptにはクラスがありません」 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes Areあなたは文字通り言及していますか、あるいはjavascriptクラスの実装は他の言語と構造的に異なりますか? – Zze