To, czy możesz coś aliasować, zależy od typu danych. Obiekty, tablice i funkcje będą obsługiwane przez referencje i możliwe jest tworzenie aliasów. Inne typy są zasadniczo niepodzielne, a zmienna przechowuje wartość, a nie odwołanie do wartości.
arguments.callee jest funkcją, dlatego możesz mieć do niej odniesienie i modyfikować ten obiekt współdzielony.
function foo() {
var self = arguments.callee;
self.myStaticVar = self.myStaticVar || 0;
self.myStaticVar++;
return self.myStaticVar;
}
Należy pamiętać, że jeśli w powyższym kodzie byłaś powiedzieć self = function() {return 42;};następnie selfbyłyby następnie odwołać się do innego obiektu niż arguments.callee, który pozostaje odniesienie do foo. W przypadku obiektu złożonego operator przypisania zastępuje odwołanie, nie zmienia natomiast obiektu, do którego się odnosi. W przypadku wartości niepodzielnych przypadek taki jak y++jest równoważny z y = y + 1przypisaniem „nowej” liczby całkowitej do zmiennej.