当前位置:首页 > JavaScript

实现一个js原型继承

2026-01-31 09:50:18JavaScript

原型继承的基本概念

在JavaScript中,每个对象都有一个内部属性[[Prototype]],指向另一个对象或null。通过原型链,对象可以访问其原型上的属性和方法。

构造函数模式

定义一个构造函数,通过new关键字创建实例,实例的[[Prototype]]会指向构造函数的prototype属性。

实现一个js原型继承

function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function() {
  console.log(`${this.name} makes a noise.`);
};

const animal = new Animal('Dog');
animal.speak(); // Dog makes a noise.

原型链继承

通过将子类的prototype指向父类的实例,实现继承。

实现一个js原型继承

function Dog(name) {
  Animal.call(this, name); // 调用父类构造函数
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog; // 修复构造函数指向

Dog.prototype.speak = function() {
  console.log(`${this.name} barks.`);
};

const dog = new Dog('Rex');
dog.speak(); // Rex barks.

ES6的class语法

使用classextends关键字简化原型继承。

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Rex');
dog.speak(); // Rex barks.

Object.create实现纯净继承

直接基于现有对象创建新对象,无需构造函数。

const animal = {
  init(name) {
    this.name = name;
  },
  speak() {
    console.log(`${this.name} makes a noise.`);
  }
};

const dog = Object.create(animal);
dog.init('Rex');
dog.speak = function() {
  console.log(`${this.name} barks.`);
};

dog.speak(); // Rex barks.

注意事项

  • 原型链过长会影响性能。
  • 引用类型的属性会被所有实例共享。
  • 使用Object.create(null)可以创建无原型的对象。

标签: 原型js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…