当前位置:首页 > 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实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: cons…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Im…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…