当前位置:首页 > JavaScript

实现一种js原型继承

2026-03-02 02:19:47JavaScript

原型继承的基本概念

在JavaScript中,原型继承是通过原型链实现的。每个对象都有一个原型(__proto__),指向另一个对象。当访问对象的属性或方法时,如果对象本身没有,会沿着原型链向上查找。

构造函数模式

通过构造函数和prototype属性实现继承。

function Parent(name) {
  this.name = name;
}
Parent.prototype.sayName = function() {
  console.log(this.name);
};

function Child(name, age) {
  Parent.call(this, name); // 继承属性
  this.age = age;
}
Child.prototype = Object.create(Parent.prototype); // 继承方法
Child.prototype.constructor = Child; // 修正构造函数指向
Child.prototype.sayAge = function() {
  console.log(this.age);
};

const child = new Child('Alice', 10);
child.sayName(); // "Alice"
child.sayAge(); // 10

Object.create()实现纯净继承

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

const parent = {
  name: 'Parent',
  sayName() {
    console.log(this.name);
  }
};

const child = Object.create(parent);
child.name = 'Child';
child.sayName(); // "Child"

ES6 class语法

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

实现一种js原型继承

class Parent {
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类构造函数
    this.age = age;
  }
  sayAge() {
    console.log(this.age);
  }
}

const child = new Child('Bob', 12);
child.sayName(); // "Bob"
child.sayAge(); // 12

注意事项

  • 使用Object.create()时需手动修正constructor属性。
  • ES6 class本质仍是原型继承的语法糖,但更清晰易读。
  • 避免直接修改__proto__属性,优先使用标准方法。

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

相关文章

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

vue.js watch实现

vue.js watch实现

使用 watch 监听数据变化 在 Vue.js 中,watch 用于监听响应式数据的变化,并在数据变化时执行回调函数。 基本语法 export default { data() {…

vue.js 实现登录

vue.js 实现登录

使用 Vue.js 实现登录功能 1. 创建 Vue 项目 使用 Vue CLI 初始化项目: vue create login-app 选择默认配置或手动配置(如 Babel、Router、V…