So che è possibile ottenere un oggetto descrittore di proprietà di una determinata proprietà 'prop
' di un determinato oggetto obj
con Object.getOwnPropertyDescriptor(obj,"prop");
. Mi stavo chiedendo: dove sono memorizzati questi oggetti? Sono memorizzati internamente all'interno di un oggetto o .... altrove? Ho provato a trovarli negli strumenti di sviluppo ma senza fortuna.Dove sono memorizzati gli oggetti del descrittore di proprietà?
risposta
Gli oggetti dei descrittori di proprietà non esistono se non richiesto esplicitamente. Vengono creati ad-hoc quando si call Object.getOwnPropertyDescriptor
. Così seguente codice:
var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');
valutare sempre false.
Così come vediamo (sia il codice che le specifiche), gli oggetti descrittore di proprietà non sono memorizzati, ma creati su richiesta.
Allora, dove sono writable
, configurable
, value
, get
, set
... atributtes memorizzati? Le specifiche non richiedono che siano esposte al codice utente ... Here is C++ definition for V8 PropertyDescriptor class - sembra che ogni proprietà occupi un byte.
E se si vuole verificare se la proprietà è scrivibile, configurabile o simili, console di Firefox permettono di farlo (ma solo se la proprietà non è scrivibile o ha getter/setter):
Ma non * qualsiasi oggetto * - se confrontato con un altro oggetto - restituisce falso? Ad esempio '[1,2,3] == [1,2,3]' è anche 'false' – Danield
Gli oggetti vengono confrontati per riferimento (" è ** lo stesso ** oggetto "), non per valore (" è ** identico ** oggetto "). Per esempio. 'var a = {}, b = a; una === b; // true' – Ginden
sì, hai ragione :) – Danield
- 1. Dove sono memorizzati gli oggetti temporanei?
- 2. Dove sono memorizzati gli acquisti InAPP?
- 3. opzioni SET .... dove sono memorizzati
- 4. Dove vengono memorizzati gli eventi di WordPress?
- 5. Dove sono memorizzati gli alias in Ubuntu 10.04
- 6. Dove sono installati gli assembly nel GAC fisicamente memorizzati?
- 7. Come gestire gli oggetti IDisposable che sono memorizzati nella cache?
- 8. L'attributo e gli oggetti dell'oggetto plotter Python sono memorizzati nell'elenco
- 9. Dove sono memorizzati i cookie di UIWebView?
- 10. Dove sono memorizzati i dati di stringa?
- 11. Dove sono memorizzati i riferimenti all'assembly del progetto dell'applicazione Web?
- 12. Come vengono memorizzati gli oggetti in JavaScript?
- 13. Dove sono memorizzati i certificati SSL?
- 14. Dove sono memorizzati i segnalibri Eclipse?
- 15. Dove i cookie sono memorizzati nel sistema?
- 16. Dove sono memorizzati i metodi in memoria?
- 17. Dove sono memorizzati i messaggi flash?
- 18. Dove sono memorizzati i "certificati" in Firefox?
- 19. Dove sono memorizzati i server registrati?
- 20. Dove sono memorizzati i rami Git?
- 21. Android: dove sono memorizzati i file di database?
- 22. Sessioni di flaconi, dove sono memorizzati i cookie?
- 23. Dove sono i riferimenti di componenti (dll) memorizzati in ASP.NET?
- 24. Dove sono memorizzati i blocchi CMS statici di Magento?
- 25. plugin Maven memorizzati dove
- 26. Python descrittore vs proprietà
- 27. Visual Studio 2010 Publish Profiles - Dove sono memorizzati?
- 28. Come vengono memorizzati gli oggetti valore nel database?
- 29. Cosa sono gli oggetti immutabili?
- 30. Dove sono memorizzati i tipi nullable in memoria?
Dalla mia lettura di la specifica, chiama questa funzione [finisce qui] (http://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty), dove costruisce il rendimento di un gruppo di diversi '[ [proprietà interne]] '. Tali proprietà non devono essere esposte al runtime finale, ma alcune implementazioni potrebbero renderle disponibili, ad esempio negli strumenti di sviluppo. La tua miliardaria può variare ... –
Sono conservati ovunque qualsiasi particolare implementazione scelga di memorizzarli, o più probabilmente, vengono costruiti quando richiesto. –