当前位置:首页 > 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实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现vue路由

js实现vue路由

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

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…