当前位置:首页 > JavaScript

实现一种js原型继承

2026-01-31 11:03:37JavaScript

原型继承的基本概念

原型继承是JavaScript中实现对象间共享属性和方法的重要机制。每个JavaScript对象都有一个内部链接指向另一个对象(原型),当访问对象的属性时,如果对象本身没有该属性,会沿着原型链向上查找。

构造函数与原型链

通过构造函数创建对象时,其原型对象(prototype)会被实例的__proto__属性引用。继承的本质是让子类的原型对象指向父类的实例,从而形成原型链。

实现一种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;
}

实现原型继承的步骤

方法1:直接继承原型
将子类的prototype指向父类的实例,但会导致父类属性被所有子类实例共享。

实现一种js原型继承

Child.prototype = new Parent(); // 继承父类原型
Child.prototype.constructor = Child; // 修复构造函数指向

方法2:使用Object.create
ES5引入的Object.create能更安全地创建原型链,避免调用父类构造函数时产生副作用。

Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

方法3:ES6的class语法
ES6的classextends关键字简化了原型继承的实现,底层仍基于原型链。

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

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

注意事项

  • 构造函数修正:手动继承原型时需修正constructor属性,避免实例的constructor指向父类。
  • 方法覆盖:子类可通过重写原型方法实现多态,但需注意调用父类方法时使用super
  • 性能影响:过长的原型链会影响属性查找效率,建议层级不超过3层。

通过上述方法,可以灵活实现JavaScript的原型继承,根据需求选择适合的方案。

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

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…