By definition neither the null
value nor the undefined
value have any properties, nor can any properties be added to them.
This is summarized nicely for null:
primitive value that represents the intentional absence of any object value.
And likewise, for undefined:
primitive value used when a variable has not been assigned a value.
(null
is the only value of the Null-type and undefined
is the only value of the Undefined-type.)
Now, for the implementation goodies:
Both of these types represent primitives and the behavior of "primitiveValue.Property" is covered by the internal ToObject method. (See GetValue/PutValue for the start of the rabbit hole.)
From 9.9: ToObject:
The abstract operation ToObject converts its argument to a value of type Object according to ..
- Undefined => Throw a TypeError exception.
- Null => Throw a TypeError exception.
- (and so on)
As far as the comments, see 11.4.3: The typeOf Operator:
Return a String determined by Type(val) according to ..
- Null => "object"
- (and so on)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…