返回

超越构造函数,与 JavaScript ES6 类 (一) 共舞

前端

构造函数 VS 类:异曲同工,各擅胜场

在 ES6 到来之前,JavaScript 的对象一直由构造函数来创建。构造函数是一种特殊的函数,它允许你用一个模板创建一个新的对象。

function Person(name, age) {
  this.name = name;
  this.age = age;
}
const person1 = new Person('John Doe', 30);
console.log(person1.name); // John Doe
console.log(person1.age); // 30

而 ES6 中引入的 class 类则是一种更现代、更简洁的方式来创建对象。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}
const person1 = new Person('John Doe', 30);
console.log(person1.name); // John Doe
console.log(person1.age); // 30

虽然构造函数和类之间有一些明显的相似之处,但它们也有着本质的不同。

构造函数和类之间的共同点

  1. 构造函数和类都是用来创建对象的。
  2. 构造函数和类都允许你指定对象的属性和方法。
  3. 构造函数和类都可以被继承。

构造函数和类之间的区别

  1. 类比构造函数更简洁。
  2. 类更易于维护。
  3. 类更易于扩展。
  4. 类更易于理解。

理解原型对象:类的幕后推手

原型对象是 JavaScript 中所有对象的祖先。

const person1 = new Person('John Doe', 30);
console.log(person1.__proto__ === Person.prototype); // true
console.log(Person.prototype.constructor === Person); // true
console.log(Person.prototype.hasOwnProperty('name')); // false

原型对象包含了一系列属性和方法,这些属性和方法可以被所有继承自该原型的对象所使用。

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};
person1.greet(); // Hello, my name is John Doe and I am 30 years old.

结语

本篇文章深入探究了 JavaScript ES6 类与构造函数之间的关联和差异,揭示了原型对象在类背后的作用。希望通过这篇文章,你能够对 class 类有一个更全面的了解,并在未来的开发中更好地运用它。

在下一篇文章中,我们将继续探索 class 类的更多特性,包括继承、多态和封装,以及如何使用 class 类来构建更强大的应用程序。敬请期待!