如何导出原型方法?

How to export a prototype method?

如何导出原型方法?

我创建了一个原型方法:

Array.prototype.remove = function(elementToRemove: any): void {
    var __idx = this.indexOf(elementToRemove);
    if (__idx >= 0) {
        this.splice(__idx, 1);
    } else {
        throw new Error(`Cannot find element ${elementToRemove}`)
    }
}

我想导出它并在另一个文件中使用。但我不知道如何添加导出:

两者

export Array.prototype.remove = function(elementToRemove: any)

Array.prototype.remove = export function(elementToRemove: any)

不起作用,我收到 'Expression expected' 错误。那么如何导出呢?

ps:我没有使用 nodejs,我在 chrome 和 HTML 和 CSS 中使用 Web 前端。

根本问题是您的代码执行 side-effect - 它向 Array.prototype.

添加了一些内容

一个选项是导出一个函数,调用时将该函数添加到原型中:

export const addRemoveToPrototype = () => {
  Array.prototype.remove = function( // ...

然后消费者可以通过

使用它
import { addRemoveToPrototype } from './addRemoveToPrototype';
addRemoveToPrototype();

另一种选择是 运行 模块顶层的代码:

Array.prototype.remove = function(elementToRemove: any): void {

然后消费者可以只导入模块,但不能对其进行任何操作:

import './addRemoveToPrototype';

也就是说,我真的建议不要改变 built-in 对象 - 它会使代码变得脆弱且更容易破解,尤其是当其他脚本 运行 在同一环境中时。