Come Lars Bak e Jay Conrod descritto in diversi video e documenti, l'idea principale delle classi nascoste nel V8 è quella di memorizzare l'offset concreto o la transizione verso un'altra classe nascosta che probabilmente contiene questo offset per la proprietà di ogni oggetto, invece di fare una ricerca "lenta" in hashtable che contiene tutte le proprietà.
In modo antiquato di accesso alla proprietà, ad esempio per ottenere point.x
, dobbiamo calcolare l'hashcode da x
e quindi passare attraverso l'array (se non ci fosse hashcode-collision quando la proprietà è stata aggiunta noi ' Otterrai il valore istantaneamente). Ma in modo new-fashion abbiamo una classe nascosta (solo una Map
?) E abbiamo bisogno di iterare attraverso di essa per scoprire che contiene la chiave x
o no e solo dopo possiamo prendere il valore della proprietà per offset in% campox
. O nel caso più complicato, dobbiamo fare alcuni passi aggiuntivi attraverso le transizioni verso altre classi nascoste. Quindi non vedo una differenza tra la memorizzazione di tutte le proprietà in hashtable e l'utilizzo di classi nascoste. Forse c'è qualche trucco di assemblaggio che non capisco?