当前位置:首页 > JavaScript

js实现重写

2026-01-31 22:01:14JavaScript

实现方法一:使用 Function.prototype 重写方法

通过修改原型链上的方法实现重写。例如重写 Array.prototype.map

const originalMap = Array.prototype.map;
Array.prototype.map = function(callback) {
    console.log('重写后的 map 方法');
    return originalMap.call(this, callback);
};
const arr = [1, 2, 3];
arr.map(x => x * 2); // 输出:重写后的 map 方法

实现方法二:使用 Object.defineProperty 重写属性

通过属性描述符控制可写性,适合重写对象属性或方法:

const obj = { value: 10 };
Object.defineProperty(obj, 'value', {
    get() { return this._value * 2; },
    set(newValue) { this._value = newValue; }
});
obj.value = 5;
console.log(obj.value); // 输出:10(getter 返回值的两倍)

实现方法三:代理模式(Proxy)

利用 Proxy 拦截对象操作,实现更灵活的重写:

const target = { name: 'Alice' };
const proxy = new Proxy(target, {
    get(target, prop) {
        if (prop === 'name') return `Proxy: ${target[prop]}`;
        return target[prop];
    }
});
console.log(proxy.name); // 输出:Proxy: Alice

实现方法四:继承与覆盖

通过类继承重写父类方法:

js实现重写

class Parent {
    greet() { return 'Hello'; }
}
class Child extends Parent {
    greet() { return `${super.greet()} World!`; }
}
const child = new Child();
console.log(child.greet()); // 输出:Hello World!

注意事项

  • 原型链重写可能影响全局,需谨慎操作。
  • Proxy 兼容性需检查(IE 不支持)。
  • 使用 Object.defineProperty 时需注意 configurablewritable 配置。

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现文件下载

js实现文件下载

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

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…