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);
