Sto provando a definire una funzione non numerabile toJSON
su un oggetto prototipo senza molta fortuna. Spero in qualcosa di simile a ECMAScript 5 toJSON
:JS funzione non enumerabile
Object.defineProperty(obj, prop, { enumerable: false });
Tuttavia, questo lo definisce come una proprietà che non può essere letta come un metodo.
speravo di essere in grado di definire la funzione in modo non numerabile, come avevo intenzione di definire i prototipi di tutti i tipi primitivi (String
, Number
, Boolean
, Array
e Object
), in modo che io può ricorsivamente applicare la funzione attraverso oggetti complessi.
L'obiettivo finale qui è quello di poter JSONify un modello/collezione Backbone con raccolte annidate ricorsivamente.
Credo che in totale Ho due domande principali:
- E 'possibile definire una funzione non enumerabile su un prototipo? Se é cosi, come?
- C'è un modo migliore per JSONify modelli Backbone nidificati?
Un metodo per definizione * è * una proprietà di un oggetto. Stai disegnando una distinzione che non esiste. Se vuoi che non sia enumerabile, allora ovviamente stai enumerando le proprietà di un oggetto. –
Sì, tuttavia mi piacerebbe che fosse una proprietà non enumerabile, nello stesso modo in cui Object.defineProperty non è enumerabile. cioè, non viene iterato quando si usa 'for (x in obj)' –
Right. Ancora una volta, un metodo è una proprietà di un oggetto che fa riferimento a una funzione. Il codice che hai è quello che useresti per rendere la proprietà non enumerabile. –