JavaScript:何时使用类而不是原型?

17

我了解到JavaScript(ES6)的最新版本现在支持创建类。我也知道,在ES5和之前的JS版本中创建和使用对象的通常方式是创建对象原型。那么,使用类与原型相比有什么区别,何时使用这两种方法呢?:

类方法:

class Car {
  constructor(brand) {
    this.carname = brand;
  }

  printStatement() {
    return "I have a " + this.carname + ".";
  }
}

mycar = new Car("Toyota");
document.getElementById("demo").innerHTML = mycar.printStatement(); // outputs "I have a Toyota."

原型法:

function Person(firstName, lastName, age, eyecolor) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
  this.eyeColor = eyecolor;
}

//adding a new method to the prototype:

Person.prototype.fullName = function() {
  return this.firstName + " " + this.lastName;
};

var john = new Person("John", "Doe", 43, "Blue");
console.log(john.fullName); // outputs "John Doe"

2
ES6(或ECMAScript 2015)不是ECMAScript的最新版本。 - Ivar
区别只在于语法。 - Mulan
3
比重复问题中任何答案都要好的回答:https://dev59.com/Fqrka4cB1Zd3GeqPcFZ3#49643668。 - jfriend00
1个回答

31
那么,使用类与原型的区别在哪里?什么时候应该使用这两种方法呢?
简单回答你的问题,实际上是没有真正的区别
引用自MDN Web Docs的定义:
“JavaScript 类是在 ECMAScript 2015 中引入的一种语法糖,主要是为了简化 JavaScript 的现有基于原型的继承。”

2
该注释已从此页面中移除,这篇文章现在描述了一些不同之处,例如在继承时调用super函数。 - Steve Bradshaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接