Чи можете ви встановити псевдонім, залежить від типу даних. Об’єкти, масиви та функції будуть оброблятися за допомогою посилань, і можливе створення псевдонімів. Інші типи є по суті атомними, і змінна зберігає значення, а не посилання на значення.
argument.callee - це функція, і тому ви можете мати на неї посилання та змінювати цей спільний об'єкт.
function foo() {
var self = arguments.callee;
self.myStaticVar = self.myStaticVar || 0;
self.myStaticVar++;
return self.myStaticVar;
}
Зверніть увагу, що якщо у наведеному вище коді ви мали сказати, self = function() {return 42;};тоді selfце посилалося б на інший об'єкт, ніж arguments.callee, що залишається посиланням на foo. Коли у вас є складений об'єкт, оператор присвоєння замінює посилання, він не змінює посиланий об'єкт. З атомними значеннями такий випадок y++еквівалентний y = y + 1, який присвоює змінному ціле число "нове".