js原型和原型链,继承

2024-08-05  本文已影响0人  xuehairong

使用__proto__来解释继承原理可以帮助理解 JavaScript 的原型链机制

基本概念

__proto__:是一个非标准的属性,指向对象的原型。实际上,__proto__ 是对象内部的[[Prototype]]属性的非标准访问方式。在现代 JavaScript 中,可以使用 Object.getPrototypeOf()Object.setPrototypeOf()代替。

继承原理的解释

  1. 构造函数与原型设置:
function Animal(name) {
  this.name = name;
}

Animal.prototype.say = function() {
  console.log('I am an animal');
};

在这个例子中:

  1. 创建继承关系:
function Mammal(name, furColor) {
  Animal.call(this, name); // 继承 Animal 的属性
  this.furColor = furColor;
}

Mammal.prototype = Object.create(Animal.prototype);
Mammal.prototype.constructor = Mammal;

在这个例子中:

  1. 实例的原型链:
const mammal = new Mammal('Lion', 'golden');

在这个例子中:

  1. 访问属性和方法:
console.log(mammal.name);           // 输出: Lion (直接从实例对象中找到)
console.log(mammal.furColor);       // 输出: golden (直接从实例对象中找到)
console.log(mammal.say());          // 输出: I am an animal (从 Animal.prototype 找到)

在这个例子中:

总结

子类的 prototype 的 __proto__ 指向父类的 prototype,形成一个原型链。
实例对象的 __proto__ 指向实例的构造函数的 prototype,从而允许访问继承的属性和方法。
这个机制使得 JavaScript 实现了对象的继承和方法的共享。希望这个解释有帮助!
上一篇下一篇

猜你喜欢

热点阅读