当前位置:首页 > JavaScript

js override 实现

2026-04-05 21:57:47JavaScript

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

通过原型链继承父类方法,并在子类中重新定义同名方法实现覆盖(override)。父类方法可通过 ParentClass.prototype.methodName.call(this) 调用。

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

function ChildClass() {}
ChildClass.prototype = Object.create(ParentClass.prototype);
ChildClass.prototype.greet = function() {
  return "Hi from Child";
};

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

方法二:ES6 Class 语法

使用 extendssuper 实现方法覆盖。super 关键字可调用父类方法。

class Parent {
  greet() {
    return "Parent says hello";
  }
}

class Child extends Parent {
  greet() {
    return "Child says hi";
  }
}

const instance = new Child();
console.log(instance.greet()); // 输出: "Child says hi"

方法三:对象属性直接覆盖

直接修改对象的属性或方法,适用于实例级别的覆盖。

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

obj.greet = function() {
  return "Overridden";
};

console.log(obj.greet()); // 输出: "Overridden"

方法四:使用 Object.assign 合并对象

通过合并对象实现方法替换,保留未覆盖的原有方法。

const base = {
  methodA() { return "A"; },
  methodB() { return "B"; }
};

const override = {
  methodA() { return "New A"; }
};

const result = Object.assign({}, base, override);
console.log(result.methodA()); // 输出: "New A"
console.log(result.methodB()); // 输出: "B"

方法五:高阶函数包装

通过函数包装动态修改方法行为,保留原方法的引用。

js override 实现

function original() {
  return "Original";
}

function override(fn) {
  return function() {
    return "Modified: " + fn();
  };
}

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

注意事项

  • 原型链覆盖会影响所有实例,而对象属性覆盖仅影响当前实例。
  • 使用 super 时需确保在 classextends 上下文中。
  • 直接修改内置对象原型(如 Array.prototype)可能导致不可预期行为,应谨慎使用。

标签: jsoverride
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现图片上传

js实现图片上传

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

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…