当前位置:首页 > JavaScript

js实现重写

2026-04-05 14:17:40JavaScript

重写方法的基本概念

在JavaScript中,重写通常指覆盖或修改已有的方法、属性或函数的行为。这可以通过原型继承、类继承或直接替换方法实现。

通过原型链重写方法

JavaScript基于原型继承,可以通过修改原型对象上的方法来重写功能。例如重写数组的toString方法:

js实现重写

Array.prototype.toString = function() {
  return '[' + this.join(', ') + ']';
};
const arr = [1, 2, 3];
console.log(arr.toString()); // 输出: "[1, 2, 3]"

使用类继承重写

ES6类语法中,可以通过extends继承父类后重写方法:

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

class Child extends Parent {
  greet() {
    return 'Hello from Child';
  }
}

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

直接替换对象方法

对于具体实例,可以直接替换其方法:

js实现重写

const obj = {
  sayHi: function() {
    return 'Hi';
  }
};

obj.sayHi = function() {
  return 'Hello';
};

console.log(obj.sayHi()); // 输出: "Hello"

使用高阶函数包装

通过高阶函数可以在不修改原函数的情况下扩展功能:

function original() {
  console.log('Original function');
}

function wrap(originalFn) {
  return function() {
    console.log('Before call');
    originalFn();
    console.log('After call');
  };
}

const wrapped = wrap(original);
wrapped();

使用Proxy进行拦截

ES6的Proxy可以拦截并重写对象的默认行为:

const target = {
  message: 'hello'
};

const handler = {
  get: function(target, prop) {
    return prop in target ? target[prop] : 'Not found';
  }
};

const proxy = new Proxy(target, handler);
console.log(proxy.message); // 输出: "hello"
console.log(proxy.unknown); // 输出: "Not found"

注意事项

重写内置方法可能影响代码的可维护性和预期行为,应谨慎使用。确保新的实现兼容原有功能,避免破坏其他依赖该方法的代码。

标签: 重写js
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

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

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现的游戏

js实现的游戏

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