怎么给面试官讲解原型和原型链
时间: 2024-03-14 16:16:20 浏览: 27
原型是JavaScript中的一个概念,每个JavaScript对象都有一个原型,它是一个指向另一个对象的引用。如果一个对象的某个属性或方法在该对象上不存在,JavaScript会在其原型上查找这个属性或方法。原型链就是由原型对象组成的链式结构,用于查找对象上不存在的属性或方法。
举个例子,假设我们有一个名为Person的构造函数:
```
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHi = function() {
console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
}
```
在这个例子中,我们给Person的原型添加了一个方法sayHi。现在,如果我们创建一个Person的实例:
```
const john = new Person('John', 25);
```
我们可以调用sayHi方法:
```
john.sayHi(); // Hi, my name is John and I am 25 years old.
```
实际上,当我们调用john.sayHi()时,JavaScript会首先在john对象上查找sayHi方法,如果该方法不存在,它会继续查找john对象的原型,也就是Person.prototype,如果Person.prototype上也不存在sayHi方法,它会继续查找Person.prototype的原型,也就是Object.prototype。如果最终还是找不到该方法,JavaScript会返回undefined。
这就是原型链的工作方式。它允许我们在JavaScript中创建对象和继承属性和方法,而不必使用类或其他面向对象的概念。