当前位置:首页 > 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实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现游标

js实现游标

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

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…