Dlaczego nie można ustawić stałych jako właściwości samych obiektów będących zmiennymi?Jak utworzyć stałe JavaScript jako właściwości obiektów używając słowa kluczowego const?
const a = 'constant' // all is well
// set constant property of variable object
const window.b = 'constant' // throws Exception
// OR
var App = {}; // want to be able to extend
const App.goldenRatio= 1.6180339887 // throws Exception
A jak stały stały się przez odniesienie stałe nagle stają się zmienne? EDYCJA: Wiem, że aplikacja nie będzie (lub raczej ... NIE POWINIEN) być zmienna; jest to tylko obserwacja ...
(function() {
const App;
// bunch of code
window.com_namespace = App;
}());
window.com_namespace; // App
window.com_namespace = 'something else';
window.com_namespace; // 'something else'
Jak ładnie zorganizowane, rozszerzalny, zorientowanym obiektowo, pojedynczo przestrzeni nazw biblioteki zawierającej stałe być wykonane z tych ograniczeń?
EDIT: Wierzę zi42, ale po prostu trzeba poprosić why
Czy obiekty nie są przekazywane przez odniesienie? – danronmoon
Tak, ale 'const obj = {}' jest trochę bezużyteczne, ponieważ referencja będzie stała, ale nadal możesz modyfikować obiekt. –
Nr Obiekty są * nie * "przekazywane przez odniesienie" (w najlepszym przypadku jest to dwuznaczne wyrażenie). Implementacja będzie na ogół "przekazywać przez * wartość * odniesienia", ale ważne jest to, że JavaScript ma semantykę "Dzielenie się obiektami" (http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing). Ciekawostka: * specyfikacja ECMAScript nie używa terminu "referencja" *. –