JavaScript 原型链
时间: 2023-12-16 13:55:13 浏览: 25
JavaScript 的原型链是一种继承机制,它使得每个对象都能从另一个对象继承属性。在 JavaScript 中,每个对象都有一个原型对象,并且可以从原型对象继承属性。
每个对象的原型对象都有一个自己的原型对象,以此类推。这就形成了一条原型链,从对象到原型对象再到其原型对象,直到最终到达 null。当你在对象上访问一个属性时,JavaScript 引擎会沿着原型链向上搜索,直到找到一个具有该属性的对象为止。
例如,假设我们有一个构造函数 `Person` 和一个实例 `person1`,它们看起来像这样:
```
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function() {
console.log(`Hi, my name is ${this.name}`);
};
const person1 = new Person('Alice');
```
在这个例子中,`person1` 的原型对象是 `Person.prototype`,而 `Person.prototype` 的原型对象是 `Object.prototype`。所以,当我们在 `person1` 上调用 `sayHi` 方法时,JavaScript 引擎会在 `person1`、`Person.prototype` 和 `Object.prototype` 中依次搜索该方法,最终找到它并调用。
原型链使得我们能够实现继承,同时又不需要使用传统的继承语法
相关问题
Javascript原型链
JavaScript的原型链是一种通过原型(prototype)来实现对象之间继承关的机制。每个JavaScript对象都有一个原型对象,用于定义该对象的属性和方法。当访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript引擎会沿着原型链向上查找,直到找到该属性或方法为止。实际上,原型链是一个链式结构,每个对象的__proto__属性指向其原型对象,形成了一个继承关系。这样,对象可以继承其原型对象的属性和方法,并且原型对象也可以有自己的原型对象,从而形成更深层次的继承关系。因此,原型链在JavaScript中起到了实现对象之间继承关系的重要作用。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *3* [JavaScript的原型链](https://blog.csdn.net/m0_72446057/article/details/129155515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *2* [JavaScript原型链(重要)](https://blog.csdn.net/liyuchenii/article/details/125957625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
javascript原型链
JavaScript 中的每个对象都有一个原型对象。原型对象是一个普通对象,它具有一些属性和方法,可以被其他对象继承。当你创建一个新对象时,它会自动继承自原型对象,并且可以访问原型对象的属性和方法。
JavaScript 使用原型链来实现继承。原型链是一个对象与其原型对象之间的链接。如果一个对象无法在它的自身属性中找到所需的属性或方法,它就会沿着原型链向上查找。如果在原型链的顶端还是找不到,就会返回 undefined。
当你调用一个对象的属性或方法时,JavaScript 引擎会首先查找对象自身的属性和方法,如果找不到,则会沿着原型链向上查找。如果在原型链上找到了对应的属性或方法,就会返回它。如果找不到,则返回 undefined。
你可以使用 Object.create() 方法来创建一个指定原型的新对象。例如,可以通过以下方式创建一个新对象,并将其原型设置为 Array.prototype:
```
var myArray = Object.create(Array.prototype);
```
这个新对象就可以访问 Array.prototype 中定义的所有属性和方法,同时也可以添加自己的属性和方法。