- 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.
- 基于LabWindows/CVI的虛擬儀器設計與應用
- 網頁編程技術
- Java開發技術全程指南
- 機器人智能運動規劃技術
- 計算機網絡技術基礎
- Windows 7寶典
- Java Web整合開發全程指南
- LAMP網站開發黃金組合Linux+Apache+MySQL+PHP
- Hadoop Beginner's Guide
- PHP求職寶典
- Raspberry Pi Projects for Kids
- Access 2007數據庫入門與實例應用金典
- Microsoft System Center Data Protection Manager Cookbook
- 傳感技術基礎與技能實訓
- Wireshark Revealed:Essential Skills for IT Professionals