Articles

JavaScript: Che cosa è Oggetto.crea ()?

Altri usi eleganti di Object.create()

Oggetto.create () può prendere un secondo argomento

Oggetto.create () può essere usato per fare uso di alcune delle molte stranezze di JavaScript. Prima di tutto, può prendere un secondo argomento come un oggetto che ha proprietà che si desidera includere nell’oggetto appena restituito. Non solo, ma puoi effettivamente passare come primo argomento, essenzialmente dicendo che non ci deve essere alcun prototipo sull’oggetto restituito. Questo può sembrare relativamente inutile, e la maggior parte dei casi d’uso probabilmente lo è, ma cosa succede se si desidera un oggetto che non ha un prototipo? Ad esempio, supponiamo che tu abbia bisogno di un oggetto statico le cui proprietà non dovrebbero mai essere modificate, da te o da nessun altro? I letterali degli oggetti, creati usando {} di base, sono dotati di una serie di proprietà incorporate, incluse quelle che li rendono configurabili; mentre gli oggetti creati con Object.create() will only have properties that you explicitly assign.

The regular instantiation of a JS object has all kinds of properties built-in, inherited from the Object.prototype

With Object.creare, possiamo definire esattamente quali proprietà esistono, incluso il prototipo

Così ora, se volessimo, possiamo creare un oggetto che non ha alcuna connessione con l’Oggetto.prototipo.

Tuttavia, dal momento che il nostro nuovo oggetto non ha alcuna connessione con il prototipo, inoltre non sono enumerabili, scrivibile, o di proprietà configurabili. Il che significa che possiamo aggiungere a questo oggetto quanto vogliamo, ma non possiamo cambiare o rimuovere nulla.

Anche se abbiamo appena riassegnato myProp, si rimane a 42.

Abbiamo anche get back “false” quando si utilizza la parola chiave delete

Nella maggior parte dei casi, questo non è ciò che vuoi. Ma ci sono certamente alcuni casi limite in cui un oggetto statico e immutabile è esattamente ciò di cui hai bisogno! Se stai lavorando su un team e hai un oggetto nel tuo codice che sicuramente non ha mai bisogno di rimuovere/modificare le sue proprietà — Oggetto.create () potrebbe essere esattamente quello che stai cercando.

So Oggetto.create () è super utile quando si tratta di ereditarietà classica, ma dà anche al programmatore il controllo totale sull’oggetto che viene creato, il che può essere piuttosto carino.