如果javascript的null
值是空对象,为什么不能为它添加属性?
以下代码清除了我的问题:
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"
答案 0 :(得分:7)
根据定义,null
值和undefined
值都不具有任何属性,也不能向其添加任何属性。
null很好地总结了这一点:
原始值,表示故意缺少任何对象值。
同样,undefined:
原始值,表示故意缺少任何对象值。
(null
是Null类型的唯一值,undefined
是Undefined类型的唯一值。)
这两种类型都代表原语,内部ToObject方法涵盖“primitiveValue.Property”的行为。 (关于兔子洞的开始,请参见GetValue/PutValue。)
抽象操作ToObject根据..
将其参数转换为Object类型的值
- Undefined =>抛出TypeError异常。
- Null => 抛出TypeError异常。
- (依此类推)
就评论而言,请参阅11.4.3: The typeOf Operator:
根据..
返回由Type(val)确定的字符串
- Undefined => “未定义”
- Null =>的 “对象”强>
- (依此类推)
答案 1 :(得分:2)
null
是Javascript中的一个对象,表示没有对象。您无法将属性添加到任何内容。
另请参阅:Why is null an object and what's the difference between null and undefined?