<p>Why was the <code>arguments.callee.caller</code> property deprecated in JavaScript?</p>

<p>It was added and then deprecated in JavaScript, but it was omitted altogether by ECMAScript.  Some browser (Mozilla, IE) have always supported it and don't have any plans on the map to remove support.  Others (Safari, Opera) have adopted support for it, but support on older browsers is unreliable.</p>

<p>Is there a good reason to put this valuable functionality in limbo?</p>

<p>(Or alternately, is there a better way to grab a handle on the calling function?)</p>

It is better to use
named functions
than arguments.callee:
```
```
function foo () {
     ... foo() ...
 }
```
```
is better than
```
```
function () {
     ... arguments.callee() ...
 }
```
```
The named function will have access to its caller through the
caller
property:
```
```
function foo () {
     alert(foo.caller);
 }
```
```
which is better than
```
```
function foo () {
     alert(arguments.callee.caller);
 }
```
```
The deprecation is due to current ECMAScript
design principles
.