js原型链
时间: 2023-07-23 11:04:22 浏览: 47
JavaScript 中的每个对象都有一个原型对象,它充当该对象的父对象。这个原型对象又有自己的原型,以此类推,形成了一个原型链。
JavaScript 中的原型链是通过每个对象的 `__proto__` 属性来实现的。当我们访问一个对象的属性时,如果该对象本身没有该属性,那么 JavaScript 就会沿着它的原型链向上查找该属性。如果最终还是找不到该属性,那么 JavaScript 就会返回 `undefined`。
下面是一个简单的示例:
```javascript
// 定义一个构造函数
function Person(name, age) {
this.name = name;
this.age = age;
}
// 给 Person 的原型对象添加一个 sayHello 方法
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}.`);
}
// 创建一个 Person 实例
var person = new Person("Tom", 18);
// 调用 person 的 sayHello 方法
person.sayHello(); // 输出 "Hello, my name is Tom."
// 输出 person 对象的 __proto__ 属性
console.log(person.__proto__); // 输出 Person.prototype
```
在上面的示例中,我们定义了一个 `Person` 构造函数,并且给它的原型对象添加了一个 `sayHello` 方法。然后我们创建了一个 `person` 实例,并调用了它的 `sayHello` 方法。最后,我们输出了 `person` 对象的 `__proto__` 属性,发现它指向了 `Person.prototype`,这就是原型链的实现方式。
需要注意的是,原型链的查找过程是一直向上查找,直到找到 `Object.prototype`,而 `Object.prototype` 的 `__proto__` 属性为 `null`。如果还是找不到该属性,那么 JavaScript 就会返回 `undefined`。