当前位置:首页 > JavaScript

实现一种js原型继承

2026-04-05 03:10:35JavaScript

原型继承的基本概念

JavaScript中的原型继承是通过原型链实现的。每个对象都有一个内部属性[[Prototype]],指向其原型对象。当访问对象的属性时,如果对象本身没有该属性,JavaScript会沿着原型链向上查找。

实现一种js原型继承

构造函数模式实现原型继承

定义一个父构造函数,通过new关键字创建实例。子构造函数通过调用父构造函数并设置子构造函数的原型为父构造函数的实例来实现继承。

实现一种js原型继承

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;

const child = new Child('Alice', 10);
child.sayName(); // 输出: Alice

Object.create()实现原型继承

使用Object.create()方法创建一个新对象,并将新对象的原型指向指定的对象。这种方法更简洁,适用于不需要构造函数的场景。

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

const child = Object.create(parent);
child.name = 'Child';
child.sayName(); // 输出: Child

ES6 class语法实现继承

ES6引入了class语法,通过extends关键字实现继承。这种方式更接近传统面向对象语言的语法。

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

class Child extends Parent {
  constructor(name, age) {
    super(name);
    this.age = age;
  }
}

const child = new Child('Bob', 12);
child.sayName(); // 输出: Bob

原型继承的优缺点

原型继承的优点是内存效率高,因为属性和方法可以被多个实例共享。缺点是原型链过长时会影响性能,且子类无法直接访问父类的私有属性。

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

相关文章

js实现拖拽

js实现拖拽

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

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…