Вот
здесь я увидел пример:
function func() {
var funcObj = arguments.callee
funcObj.test++
alert(funcObj.test)
}
func.test = 1
func()
func()
Ниже было примечание, что
Код:
|
В примере нельзя было сделать присвоение:
var test = arguments.callee.test
test++
так как при этом операция ++ сработала бы на локальной переменной test, а не на свойстве test объекта функции. |
Почему так происходит? У меня есть предположение, что в JavaScript есть некий механизм передачи переменных по ссылке и по значению.
Возникли следующие вопросы:
1) Есть ли в JavaScript что-то похожее на передачу по ссылке?
2) Как можно понять, что записав var myvar=some.var, будет ли в var ссылка на объект или же создаётся новая локальная переменная? Если я сделаю myvar++, то я сделаю эту операцию на локальной переменной или же на объекте, на который ссылается эта переменная.