Cześć, ostatnio zacząłem naukę JavaScriptu i mam pytanie. Na początek prosta funkcja:
var myFunction = function(){
var myValue1 = 15;
var myValue2 = myValue1;
return myValue2;
}
Wszystko działa ok, wartość myValue1 jest kopiowana i przypisywana do myValue2. Konsola w momencie wywołania funkcji zwraca wynik 15. Teraz podobna sytuacja w przypadku obiektu. Chcę przypisać jedną właściwość (zmienną?) do drugiej:
var myObject = {
myValue1: 15,
myValue2: myValue1
}
W tym przypadku otrzymuję błąd na starcie - ReferenceError: myValue1 is not defined. Pomyślałem, że w momencie tworzenia obiektu myObject, myValue1 faktycznie nie istnieje, więc zrobiłem to samo konstruktorem obiektu:
var myObject = new Object();
myObject.myValue1 = 15;
myObject.myValue2 = myObject.myValue1;
Tutaj wszystko dzieje się po kolei, najpierw jest tworzona właściwość myValue1, a potem myValue2. Wszystko działa. Dlaczego w pierwszym przypadku nie zadziałało? Przecież "właściwość to zmienna w obiekcie", dlaczego w notacji literału nie zachowuje się jak zmienna lokalna? Dlaczego w funkcji, która podobno też jest obiektem coś takiego działa?