L'unica domanda che ho è perché la seconda volta chiamo x.modifyPrivate (true) perché è quando viene eseguita la riga X, il valore di _private passato è ancora 'falso'.Membri privati nel modello del modulo, non modificabili?
Posso dare un senso a questo se modifico leggermente la mia conoscenza delle chiusure per essere che la chiusura è fatta per riferimento, e quando cambi il valore di un riferimento non stai cambiando il valore al quale il riferimento originale ha puntato, tu stanno cambiando il riferimento stesso per indicare un nuovo valore ... Ma tutta questa cosa è molto confusa e sono sicuro che qualcuno là fuori può indicarmi un diagramma sulla rete che lo spiega.
Sono anche molto interessato a sapere come scrivere questo codice in modo che _private sia in effetti modificato per le successive chiamate a modify().
Gli argomenti sono passati per valore in JS. Ciò significa che la funzione 'modify' è efficacemente priva di significato. Anche se 'val' si riferiva ad un oggetto, il valore della sua _local_ copy (= reference pure) verrebbe riscritto, non l'oggetto stesso. – raina77ow
Sì, grazie, non posso credere di averlo dimenticato. Le chiusure usano il riferimento, le chiamate di funzione usano il valore. Destra! – JayPrime2012