返回
谈论JavaScript原型链 - 掌控对象间神秘的继承关系
前端
2023-12-19 15:44:42
揭秘JavaScript的继承秘诀
在JavaScript中,我们习惯使用类来组织代码,并且使用new运算符来创建对象实例。但实际上,JavaScript中并没有真正的类,只有对象。那么,JavaScript是如何实现继承的呢?答案就是原型链。
原型链是什么?
原型链是一个隐式的链式数据结构,它将对象连接起来,形成一个树状结构。每个对象都有一个原型,原型也是一个对象,它又可能拥有自己的原型,以此类推。
原型链如何工作?
当我们使用new运算符创建一个对象时,JavaScript会自动在该对象上创建一个名为__proto__的属性,这个属性指向该对象的原型。当我们访问一个对象的属性时,JavaScript会首先在该对象上查找该属性,如果找不到,则会沿着原型链向上查找,直到找到该属性或到达原型链的顶部(null)。
原型链的妙用
原型链可以用来实现继承。我们可以通过将子对象的原型设置为父对象,来让子对象继承父对象的所有属性和方法。这种继承方式非常简单,而且不需要使用任何特殊的语法。
实例剖析:看懂类、构造函数和示例对象的关系
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
class Student extends Person {
constructor(name, major) {
super(name);
this.major = major;
}
study() {
console.log(`${this.name} is studying ${this.major}`);
}
}
const person = new Person('John');
const student = new Student('Jane', 'Computer Science');
person.greet(); // Hello, my name is John
student.greet(); // Hello, my name is Jane
student.study(); // Jane is studying Computer Science
在这个例子中,Student类继承了Person类,因此Student对象具有Person对象的所有属性和方法。Student对象还具有自己的属性和方法,如major和study()。
结语
原型链是JavaScript中一种非常重要的概念,它不仅可以用来实现继承,还可以用来实现许多其他特性,如组合和委托。掌握原型链可以帮助我们更好地理解JavaScript是如何工作的,并可以帮助我们写出更好的代码。