我最近開始學習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 /等中的類沒有相同的作用?
這兩個不完全等價。 Javascript版本應該使用'prototype'來定義方法並將'speed'放在'this.speed'上。 – deceze
是的。你的「類」將被轉換爲int function(){},它將被用關鍵字new調用。這就像語法糖一樣。但是在ES6中,課程將以標準形式出現(如同樣也是糖)。 https://googlechrome.github.io/samples/classes-es6/ – Vitalii
「Javascript does not have classes」 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes Are你是指字面意思還是說,JavaScript類的實現在體系結構上與其他語言不同? – Zze