视频字幕
JavaScript 原型继承是其核心特性之一。每个对象都有一个内部链接,称为原型链接,指向它的原型对象。当我们访问对象的属性时,如果对象本身没有这个属性,JavaScript 会沿着原型链向上查找,直到找到属性或到达链的顶端。
每个函数都有一个 prototype 属性,这个属性指向一个对象。当我们使用 new 关键字调用构造函数创建新对象时,新创建的实例对象的内部原型链接会自动指向构造函数的 prototype 对象。这样,实例对象就能够继承 prototype 对象上的属性和方法。
原型链的查找机制是这样工作的:当我们访问一个对象的属性时,JavaScript 引擎首先在对象自身查找。如果没有找到,就会沿着原型链接向上查找,依次检查每一层的原型对象,直到找到该属性或者到达原型链的顶端 null 为止。这个过程是自动进行的。
实现继承有多种方法。最常用的是使用 Object.create 方法创建一个新对象,并将其原型设置为父对象。也可以通过设置子构造函数的 prototype 属性来实现。ES6 引入的 class 语法提供了更简洁的继承方式,但本质上仍然是原型继承。这样,子类实例就能继承父类的属性和方法。
JavaScript 原型继承是一种独特的面向对象编程方式。与传统的类继承不同,JavaScript 使用原型链来实现对象之间的继承关系。每个对象都有一个原型,可以从原型继承属性和方法。
原型链是 JavaScript 实现继承的机制。当访问对象的属性时,如果对象本身没有该属性,JavaScript 引擎会沿着原型链向上查找。每个对象都有一个 __proto__ 属性指向其原型,形成一条链式结构,直到 Object.prototype,最终指向 null。
构造函数是创建对象的特殊函数。每个构造函数都有一个 prototype 属性,指向一个对象。当使用 new 操作符调用构造函数时,创建的实例会自动链接到构造函数的 prototype 对象,实现继承关系。
这是实现原型继承的经典方式。首先定义父类构造函数和原型方法,然后定义子类构造函数,在其中调用父类构造函数。关键步骤是使用 Object.create 创建新的原型对象,建立继承关系,最后重置 constructor 属性。这样子类就能继承父类的属性和方法了。
这个代码示例展示了经典的原型继承实现。我们定义了 Animal 构造函数和 Dog 构造函数,通过 Object.create 设置继承关系。Dog 实例可以访问 Animal 原型上的方法。原型继承是 JavaScript 的核心特性,它基于原型链提供了灵活的继承机制,属性查找沿着原型链进行,既灵活又内存高效。