javascript - JavaScript:何时使用类与原型?
问题描述
我了解最新版本的 JavaScript (ES6) 现在支持创建类。我也明白在 ES5 和早期版本的 JS 中创建和使用对象的常用方法是创建对象原型。那么,使用类和下面这样的原型有什么区别,什么时候使用这两种方法呢?:
上课方式:
class Car {
constructor(brand) {
this.carname = brand;
}
present() {
return "I have a " + this.carname + ".";
}
}
mycar = new Car("Toyota");
document.getElementById("demo").innerHTML = mycar.present(); // outputs "I have a Toyota."
原型方法:
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
//adding a new method to the prototype:
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
var john = new Person("John", "Doe", 43, "Blue");
console.log(john.name); // outputs "John Doe"
解决方案
那么,使用类和下面这样的原型有什么区别,什么时候使用这两种方法呢?
简单地回答你的问题,没有真正的区别。
直接来自MDN 网络文档定义:
在 ECMAScript 2015 中引入的 JavaScript 类主要是 JavaScript 现有的基于原型的继承的语法糖。
推荐阅读
- php - 在php中查找最小值和最大值之间的所有数字组合
- c# - 如何在实体框架中的两个表之间创建双向关系
- android - view 可以从 MVVM 中的 ViewModel 请求数据吗?
- mysql - 选择并更新结果 SQL 查询
- operating-system - 调试时如何知道是哪个代码在xv6中造成了陷阱?
- javascript - Highcharts:将图表旋转 90 度但也重新绘制它
- php - 使用 ionic、php 和 my sql 创建一个函数,每次在日历中的特定日期创建事件时在准确时间调用
- c# - 在 .msi 安装程序中包装 C# 应用程序
- c# - .dtbcache 文件有什么作用?
- c++ - 如何在 C++ 中增加数组值?