javascirpt原型链和继承
时间: 2024-06-23 15:00:29 浏览: 181
深入理解javascript原型链和继承
JavaScript中的原型链(prototype chain)和继承是面向对象编程的重要概念,它们是JavaScript特有的实现继承的方式,与传统的类-实例模型不同。
1. 原型链:每个JavaScript对象都有一个内置的[[Prototype]]属性,指向另一个对象。当你试图访问一个对象的属性或方法时,如果该对象自身没有这个属性,JavaScript会沿着原型链向上查找,直到找到或者到达原型链的顶端(`Object.prototype`)。这就是原型链的工作原理,它使得子类可以访问父类的方法和属性。
2. 继承:在JavaScript中,继承是通过原型链实现的。通常,我们会创建一个构造函数(也称为原型的构造函数),然后用它来创建一个新的对象,这个新对象会自动获得原型(构造函数的实例)的所有属性和方法。子类(构造函数的新实例)就通过这种方式“继承”了父类的特性。
举个例子:
```javascript
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function() {
console.log(this.name + ' makes a sound.');
}
function Dog(name, breed) {
Animal.call(this, name); // 使用构造函数的call方法来设置原型链
this.breed = breed;
}
Dog.prototype = Object.create(Animal.prototype); // 创建子类的原型并指向父类
Dog.prototype.constructor = Dog; // 修正构造函数指针
// 创建子类实例
let myDog = new Dog('Rex', 'Labrador');
myDog.speak(); // 输出 "Rex makes a sound."
```
阅读全文