返回
超越构造函数,与 JavaScript ES6 类 (一) 共舞
前端
2023-11-01 15:08:54
构造函数 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
虽然构造函数和类之间有一些明显的相似之处,但它们也有着本质的不同。
构造函数和类之间的共同点
- 构造函数和类都是用来创建对象的。
- 构造函数和类都允许你指定对象的属性和方法。
- 构造函数和类都可以被继承。
构造函数和类之间的区别
- 类比构造函数更简洁。
- 类更易于维护。
- 类更易于扩展。
- 类更易于理解。
理解原型对象:类的幕后推手
原型对象是 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 类来构建更强大的应用程序。敬请期待!