当前位置:首页 > JavaScript

js 实现重写

2026-03-15 03:03:51JavaScript

重写方法的基本实现

在JavaScript中,可以通过修改对象的属性或方法来重写已有功能。例如,重写一个对象的方法:

const obj = {
  originalMethod: function() {
    console.log('Original method');
  }
};

// 重写方法
obj.originalMethod = function() {
  console.log('Overridden method');
};

使用原型链重写

通过修改原型链上的方法可以实现对所有实例的重写:

function MyClass() {}
MyClass.prototype.method = function() {
  console.log('Original method');
};

// 重写原型方法
MyClass.prototype.method = function() {
  console.log('Overridden method');
};

重写内置对象方法

JavaScript允许重写内置对象的方法,但不推荐这种做法:

Array.prototype.push = function() {
  console.log('Overridden push method');
};

使用Proxy实现高级重写

Proxy可以拦截并重定义对象的基本操作:

const target = {
  message: 'Hello'
};

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

const proxy = new Proxy(target, handler);

函数柯里化实现重写

通过柯里化可以改变函数的行为:

function original(a, b) {
  return a + b;
}

function override(fn) {
  return function(a, b) {
    return fn(a, b) * 2;
  };
}

const newFn = override(original);

使用装饰器模式

装饰器模式允许在不改变原对象的基础上动态添加功能:

function decorate(obj, prop, decorator) {
  const original = obj[prop];
  obj[prop] = function() {
    return decorator(original.apply(this, arguments));
  };
}

const calculator = {
  add: (a, b) => a + b
};

decorate(calculator, 'add', result => result * 10);

重写类方法

在ES6类中重写方法:

class Parent {
  method() {
    console.log('Parent method');
  }
}

class Child extends Parent {
  method() {
    super.method(); // 调用父类方法
    console.log('Child method');
  }
}

使用Object.defineProperty

通过属性描述符精确控制重写行为:

js 实现重写

const obj = {};
Object.defineProperty(obj, 'prop', {
  get: function() {
    return 'Overridden getter';
  },
  set: function(value) {
    console.log('Overridden setter:', value);
  }
});

每种重写方法都有其适用场景,需要根据具体需求选择最合适的实现方式。

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

相关文章

js实现动画

js实现动画

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

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…