Poiché il modello di memoria python è dizionari di dizionari, sembra che qualsiasi oggetto in JavaScript abbia una rappresentazione simile.
Sotto codice,
>
foo = {}
rende foo
come dizionario vuoto {}
. multa.
Se il codice dice,
> foo["bar"] = function(){
this.ack = 3;
};
allora foo
ha l'aspetto di un dizionario come mostrato di seguito:
{"bar": function(){this.ack = 3}, "__proto__":Object}
La mia comprensione è corretta?
Sì, allora qualsiasi oggetto in JavaScript può essere consultato come object[expression]
, nel mio caso l'oggetto è foo
.
mdn dice anche: JavaScript is designed on a simple object-based paradigm. An object is a collection of properties, and a property is an association between a name and a value.
Se analizzo in dettaglio i dettagli di foo
, la rappresentazione di foo
dalla console del browser, sembra un dizionario di dizionari come mostrato di seguito (nello screenshot):
Lamiadomanda:
Riesciascriverelaformadeldizionario{}
difoo
perlarappresentazionesopra(mostratanelloscreenshot)inquantosembradizionarididizionari?
PersupportarelamiaaffermazionecheglioggettisonodizionariinJavaScript,diseguitosonoriportatiidati.
Hoosservatoche,qualsiasicosaèmemorizzatacomeelementodeldizionario,inJavaScript:
varx="hello";
window.x["length"]
5
var number = 2
undefined
number["toString"]
toString()
number["toString"]();
"2"
PotreiscriverequalsiasicodiceinJavaScriptinterminididizionario.
varfoo="hello";
var x = foo.length; //5
x = foo.charAt(1); // "e"
x = "avast".charAt(3); //"s"
//like this
window["foo"] = "hello";
"hello"
window["x"] = window["foo"].length;
5
window["x"]
5
window["x"] = window["foo"].charAt(1)
"e"
window["x"] = "avast".charAt(3);
"s"
Nota: la chiave è sempre una stringa in Javascript. string è un tipo immutabile