Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to export a prototype method?

How to export a prototype method?

I created 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}`)
    }
}

and I want to export it and use in another file. But I don’t know how to add export to it:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

both

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

and

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

doesn’t work, I received ‘Expression expected’ Error. So how can I export it?

ps: I’m not using nodejs, I’m using web frontend in chrome with HTML and CSS.

>Solution :

The fundamental issue is that your code performs a side-effect – it adds something to Array.prototype.

One option is to export a function that, when called, adds the function to the prototype:

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

and then consumers can use it by doing

import { addRemoveToPrototype } from './addRemoveToPrototype';
addRemoveToPrototype();

Another option is to simply run that code at the top level of the module:

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

and then consumers can just import the module, but not do anything with it:

import './addRemoveToPrototype';

That said, I’d really recommend not mutating built-in objects – it makes the code fragile and more easily breakable, especially when other scripts run in the same environment.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading