当前位置:首页 > JavaScript

实现一个js原型继承

2026-01-31 09:50:18JavaScript

原型继承的基本概念

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

构造函数模式

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

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指向父类的实例,实现继承。

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实现纯净继承

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

实现一个js原型继承

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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…