JavaScript:何时使用类与原型?

Raj*_*nan 5 javascript javascript-objects ecmascript-6

我知道最新版本的 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."
Run Code Online (Sandbox Code Playgroud)

原型方法:

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"
Run Code Online (Sandbox Code Playgroud)

Nic*_*ber 13

那么,使用类与如下所示的原型之间有什么区别,以及何时使用这两种方法?

简单地回答你的问题,没有真正的区别

直接来自MDN 网络文档定义

ECMAScript 2015 中引入的 JavaScript 类主要是对 JavaScript 现有的基于原型的继承的语法糖。

  • 此注释已从此页面中删除,现在确实描述了一些差异,例如在继承时调用 super 函数。 (3认同)