DEV Community

Calin Baenen
Calin Baenen

Posted on

Is there a suitable equivalent to `Function.caller` in modern JS?

So, as MDN (Mozilla Developer Network) says, Function.caller is not only deprecated, but removed from the Relevant Web Standards.
But, this isn't good for me, as I want to know what function is calling a function I have.

I have a set of private variables, and I only want "friend functions" to see those variables without having to return every function from another function. (Also because these private variables are user-defined, and thus can't be predicted, or written in advance.)

So, I was wondering, does modern JS provide anything similar to Function.caller?

Thanks!
Cheers!

Discussion (6)

Collapse
akashkava profile image
Akash Kava

Not possible but you can use symbols to store private data and expose those symbols to friend functions.

Collapse
baenencalin profile image
Calin Baenen Author

That's the approach I'm going for now, but it would have been nice if Function.prototype.caller still existed, because then I could just make a getter function for each key, and call it a day.
Sadly, symbols can still be exposed, unless you want to work with Proxys.

Collapse
georgecoldham profile image
George

A sadly irritating workaround :/

Collapse
baenencalin profile image
Calin Baenen Author

I know. - Also dangerous because it's not completely private.

Collapse
darkwiiplayer profile image
DarkWiiPlayer

Sounds a bit like an XY Problem

Collapse
baenencalin profile image
Calin Baenen Author

XY?