javascript - Gör den returnerade anonyma funktionen till samma instans för varje anrop


Följande funktion returnerar en ny anonym funktion vid varje anrop.

public example() {
    return (): string => {
        return 'hello world';
    };
}

let a = example();
let b = example();

console.log(a === b);

Ovanstående kommer att skriva ut false

Är det möjligt att återanvända samma anonyma funktion utan att behöva tilldela den som en egenskap till this. Så att funktionen är isolerad.

Svar #1

Du kan låta example vara en funktion som stänger över funktionen som ska returneras, genom att använda en IIFE:

let example = (() => {
    let _priv = () => "hello world";
    return function(){ return _priv; };
  })();
  
let a = example();
let b = example();

console.log(a === b);

Detta var en av metoderna (om inte metoden) för privata variabler innan det fanns alternativ som att använda Typescripts statiska kontroller och private.

Svar #2

import * as deepEqual from "deep-equal";

Försök att använda: console.log(deepEqual(a, b);

Relaterade artiklar