当前位置:首页 > JavaScript

js override 实现

2026-03-14 03:50:58JavaScript

方法1:原型链继承与重写

通过修改对象的原型链实现方法重写。子类可继承父类原型并覆盖特定方法。

function Parent() {}
Parent.prototype.greet = function() { return "Hello from Parent"; };

function Child() {}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.greet = function() { return "Hello from Child"; };

const child = new Child();
console.log(child.greet()); // 输出: "Hello from Child"

方法2:ES6 Class的extends与super

使用ES6的class语法和extends关键字实现方法重写,通过super调用父类方法。

js override 实现

class Parent {
  greet() { return "Hello from Parent"; }
}

class Child extends Parent {
  greet() { return super.greet() + " overridden by Child"; }
}

const child = new Child();
console.log(child.greet()); // 输出: "Hello from Parent overridden by Child"

方法3:直接修改对象方法

对已有对象实例的方法进行直接替换,适用于单例或特定实例的场景。

js override 实现

const obj = {
  greet: function() { return "Original method"; }
};

obj.greet = function() { return "Overridden method"; };
console.log(obj.greet()); // 输出: "Overridden method"

方法4:使用Object.defineProperty

通过属性描述符控制方法的可写性,实现更精细的重写逻辑。

const obj = {};
Object.defineProperty(obj, 'greet', {
  writable: true,
  value: function() { return "Initial method"; }
});

obj.greet = function() { return "Overridden via defineProperty"; };
console.log(obj.greet()); // 输出: "Overridden via defineProperty"

方法5:高阶函数包装

通过函数包装实现动态重写,保留对原始方法的引用。

function original() { return "Original"; }

function override(fn) {
  const originalFn = fn;
  return function() { return "Overridden: " + originalFn(); };
}

const newFn = override(original);
console.log(newFn()); // 输出: "Overridden: Original"

注意事项

  • 原型链重写会影响所有实例,而直接修改对象仅影响当前实例。
  • 使用Object.defineProperty时需注意writableconfigurable属性的设置。
  • ES6的super只能在子类方法中使用,不可在普通函数中调用。

标签: jsoverride
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…