Thanks to visit codestin.com
Credit goes to developer.mozilla.org

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

View in English Always switch to English

SyntaxError: Property-Name __proto__ erscheint mehr als einmal im Objektliteral

Der JavaScript-Ausnahmefehler "property name __proto__ appears more than once in object literal" tritt auf, wenn ein Objektliteral mehrfach das Feld __proto__ enthält, das verwendet wird, um das Prototyp-Objekt dieses neuen Objekts festzulegen.

Meldung

SyntaxError: Duplicate __proto__ fields are not allowed in object literals (V8-based)
SyntaxError: property name __proto__ appears more than once in object literal (Firefox)
SyntaxError: Attempted to redefine __proto__ property. (Safari)

Fehlertyp

SyntaxError

Was ist schiefgelaufen?

Der Schlüssel __proto__ ist im Gegensatz zu anderen Eigenschaftsschlüsseln eine spezielle Syntax in einem Objektliteral. Er wird verwendet, um das Prototyp-Objekt des erstellten Objekts festzulegen und darf in einem Objektliteral nicht mehr als einmal erscheinen. Beachten Sie, dass diese Einschränkung nur für die __proto__-Prototyp-Setter-Syntax gilt: Wenn sie tatsächlich die Wirkung hat, eine Eigenschaft mit dem Namen __proto__ zu erstellen, kann sie mehrfach auftreten. Siehe Prototyp-Setter für die genauen Syntax-Einschränkungen.

Beachtenswert ist, dass der Schlüssel __proto__ in Objektliteralen eine spezielle Syntax ist und im Gegensatz zur Object.prototype.__proto__-Zugriffseigenschaft nicht veraltet ist.

Beispiele

Ungültige Fälle

js
const obj = { __proto__: {}, __proto__: { a: 1 } };

Gültige Fälle

js
// Only setting the prototype once
const obj = { __proto__: { a: 1 } };

// These syntaxes all create a property called "__proto__" and can coexist
// They would overwrite each other and the last one is actually used
const __proto__ = null;
const obj2 = {
  ["__proto__"]: {},
  __proto__,
  __proto__() {},
  get __proto__() {
    return 1;
  },
};

Siehe auch