javascript - check - Warum kann eine Eigenschaft nicht zu einem Nullwert hinzugefügt werden?



javascript object property undefined (2)

Wenn der null von JavaScript ein leeres Objekt ist, warum kann also keine Eigenschaft hinzugefügt werden? Der folgende Code löscht meine Frage:

var a = null;

typeof a;
>>> "object"

a.name = 'name';
>>> TypeError: Cannot set property 'name' of null

var a = new Object();

typeof a;
>>> "object"

a.name = 'name';
>>> "name"

https://src-bin.com


Answer #1

Per Definition haben weder der null noch der undefined Wert Eigenschaften, noch können ihnen Eigenschaften hinzugefügt werden.

Dies ist nett für null zusammengefasst :

primitiver Wert , der die absichtliche Abwesenheit eines Objektwerts darstellt.

Und ebenso für undefiniert :

primitiver Wert , der die absichtliche Abwesenheit eines Objektwerts darstellt.

( null ist der einzige Wert des Typs Null und undefined ist der einzige Wert des Typs Undefined.)

Nun, für die Umsetzung Goodies:

Beide Typen stellen Primitive dar und das Verhalten von "primitiveValue.Property" wird durch die interne ToObject-Methode abgedeckt. (Siehe GetValue / PutValue für den Beginn des Kaninchenlochs.)

Ab 9.9: ToObject :

Die abstrakte Operation ToObject konvertiert ihr Argument in einen Wert vom Typ Object gemäß ..

  • Nicht definiert => Eine TypeError-Ausnahme auslösen.
  • Null => Wirf eine TypeError-Ausnahme.
  • (und so weiter)

Zu den Kommentaren siehe 11.4.3: Der typeOf Operator :

Gibt einen String zurück, der durch Type (val) nach ..

  • Nicht definiert => "undefiniert"
  • Null => "Objekt"
  • (und so weiter)





typeerror