Come mai le costanti non possono essere impostate come proprietà di oggetti che sono variabili stesse?Come creare costanti Javascript come proprietà degli oggetti usando la parola chiave 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
E come mai le costanti passate per riferimento diventano improvvisamente variabili? EDIT: So che l'App non sarà (o piuttosto ... NON DEVE) essere mutabile; questa è solo un'osservazione ...
(function() {
const App;
// bunch of code
window.com_namespace = App;
}());
window.com_namespace; // App
window.com_namespace = 'something else';
window.com_namespace; // 'something else'
Come può un ben organizzato, estensibile, orientato agli oggetti, singolarmente namespace libreria contenente costanti essere fatta con queste limitazioni?
EDIT: Credo zi42, ma devo solo chiedere why
Gli oggetti non sono passati per riferimento? – danronmoon
Sì, ma 'const obj = {}' è abbastanza inutile perché il riferimento sarà costante, ma è comunque possibile modificare l'oggetto. –
No. Gli oggetti sono * non * "passati per riferimento" (questa è una frase ambigua al meglio). Un'implementazione generalmente "passa per * valore * del riferimento" ma l'importante è che JavaScript abbia [semantica di Call By Object Sharing] (http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing). Fatto divertente: * la specifica ECMAScript non usa il termine "riferimento" *. –