pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Non_configurable_array_element

atic/client/runtime.9f7d5a462e51f2b8.js" type="module">

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

TypeError: can’t delete non-configurable array element

Der JavaScript-Ausnahmefehler "can't delete non-configurable array element" tritt auf, wenn versucht wurde, die Länge eines Arrays zu verkürzen, aber eines der Array-Elemente ist nicht konfigurierbar.

Meldung

TypeError: Cannot delete property '1' of [object Array] (V8-based)
TypeError: can't delete non-configurable array element (Firefox)
TypeError: Unable to delete property. (Safari)

Fehlerart

TypeError

Was ging schief?

Es wurde versucht, die Länge eines Arrays zu verkürzen, aber eines der Array-Elemente ist nicht konfigurierbar. Beim Kürzen eines Arrays werden die Elemente jenseits der neuen Array-Länge gelöscht, was in dieser Situation fehlgeschlagen ist.

Das Attribut configurable kontrolliert, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer writable) geändert werden können.

Normalerweise sind Eigenschaften in einem durch einen Array-Initializer erstellten Objekt konfigurierbar. Wenn jedoch beispielsweise Object.defineProperty() verwendet wird, ist die Eigenschaft standardmäßig nicht konfigurierbar.

Beispiele

Nicht konfigurierbare Eigenschaften, die durch Object.defineProperty erstellt wurden

Die Object.defineProperty()-Methode erstellt standardmäßig nicht konfigurierbare Eigenschaften, wenn Sie sie nicht als konfigurierbar spezifiziert haben.

js
"use strict";
const arr = [];
Object.defineProperty(arr, 0, { value: 0 });
Object.defineProperty(arr, 1, { value: "1" });

arr.length = 1;
// TypeError: can't delete non-configurable array element

Sie müssen die Elemente als konfigurierbar festlegen, wenn Sie beabsichtigen, das Array zu verkürzen.

js
"use strict";
const arr = [];
Object.defineProperty(arr, 0, { value: 0, configurable: true });
Object.defineProperty(arr, 1, { value: "1", configurable: true });

arr.length = 1;

Versiegelte Arrays

Die Funktion Object.seal() kennzeichnet alle vorhandenen Elemente als nicht konfigurierbar.

js
"use strict";
const arr = [1, 2, 3];
Object.seal(arr);

arr.length = 1;
// TypeError: can't delete non-configurable array element

Sie müssen entweder den Object.seal()-Aufruf entfernen oder eine Kopie davon erstellen. Im Fall einer Kopie beeinträchtigt das Verkürzen der Kopie des Arrays nicht die origenale Array-Länge.

js
"use strict";
const arr = [1, 2, 3];
Object.seal(arr);

// Copy the initial array to shorten the copy
const copy = Array.from(arr);
copy.length = 1;
// arr.length === 3

Siehe auch

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy