JavaScript原型链
程序员文章站
2022-06-12 21:52:17
...
1. 说明
原型链是JavaScript中非常重要的一个基础知识之一,在我看来,原型链可以认为是一个继承链
2. 什么是原型
- 原型的字面意思是指原来的类型或模型;
- JavaScript的原型可以理解为一个对象,每个对象就是一个独立原型;
- 原型(对象)就是构成原型链的一个个节点;
- 它是JavaScript继承的基础;
3. 原型规则
- 所有引用类型(数组,对象,函数),都可以*扩展属性;
- 所有引用类型(数组,对象,函数),都有一个__prote__属性,他是一个普通对象,是引用类型的“隐式原型”(父对象);
- 所有函数,都有一个prototype属性,是“显示原型”,也是普通对象;
- 所有引用类型(数组,对象,函数),“隐式原型”__prote__的值 指向其构造函数“显示原型”prototype的值;
- 当试图获取对象的某个属性时,如果这个对象本身没有,那么回去他的__proto__中找.(继承就实现了);
4. 原型链
function Animal() {
this.name = "animal";
this.eat = function() {
console.log(this.name, "吃...");
}
}
function Dog() {
this.name = "dog";
this.run = function() {
console.log(this.name, "跑...");
}
}
// Dog去继承Animal
Dog.prototype = new Animal();
var dog = new Dog();
dog.run(); // dog跑...
dog.eat(); // dog吃...
// dog的"隐式原型"与其构造函数Dog的“显式原型”值相同
console.log(dog.__proto__); // Animal {name: "animal", eat: ƒ}
console.log(Dog.prototype); // Animal {name: "animal", eat: ƒ}
console.log(dog.__proto__ == Dog.prototype); // true