- Hands-On Machine Learning with JavaScript
- Burak Kanber
- 247字
- 2021-06-25 21:38:18
Classes
One very welcome change in ES6 is the addition of classes and class inheritance. Previously, object-oriented programming in JavaScript required prototypical inheritance, which many developers found unintuitive, like the following ES5 example:
var Automobile = function(weight, speed) {
this.weight = weight;
this.speed = speed;
}
Automobile.prototype.accelerate = function(extraSpeed) {
this.speed += extraSpeed;
}
var RaceCar = function (weight, speed, boost) {
Automobile.call(this, weight, speed);
this.boost = boost;
}
RaceCar.prototype = Object.create(Automobile.prototype);
RaceCar.prototype.constructor = RaceCar;
RaceCar.prototype.accelerate = function(extraSpeed) {
this.speed += extraSpeed + this.boost;
}
In the preceding code, extending an object requires calling the parent class in the child's constructor function, creating a clone of the parent's prototype object, and overriding the parent's prototype constructor with the child's prototype constructor. These steps were seen as unintuitive and burdensome by most developers.
Using ES6 classes, however, the code will look like this:
class Automobile {
constructor(weight, speed) {
this.weight = weight;
this.speeed = speed;
}
accelerate(extraSpeed) {
this.speed += extraSpeed;
}
}
class RaceCar extends Automobile {
constructor(weight, speed, boost) {
super(weight, speed);
this.boost = boost;
}
accelerate(extraSpeed) {
this.speed += extraSpeed + this.boost;
}
}
The preceding syntax is more in line with what we'd expect from object-oriented programming, and also makes inheritance much simpler.
It's important to note that under the hood, ES6 classes still use JavaScript's prototypical inheritance paradigm. Classes are just syntactic sugar on top of the existing system, so there is no significant difference between these two approaches other than clean code.
- 中文版Photoshop CS5數(shù)碼照片處理完全自學(xué)一本通
- Hands-On Artificial Intelligence on Amazon Web Services
- 圖形圖像處理(Photoshop)
- 數(shù)據(jù)運(yùn)營之路:掘金數(shù)據(jù)化時(shí)代
- RPA(機(jī)器人流程自動(dòng)化)快速入門:基于Blue Prism
- 樂高機(jī)器人—槍械武器庫
- FPGA/CPLD應(yīng)用技術(shù)(Verilog語言版)
- Web編程基礎(chǔ)
- 智慧未來
- Learning iOS 8 for Enterprise
- Java求職寶典
- 工廠電氣控制設(shè)備
- 互聯(lián)網(wǎng)單元測(cè)試及實(shí)踐
- 巧學(xué)活用AutoCAD
- 微計(jì)算機(jī)原理及應(yīng)用