如果null
javascript 的值是一个空对象,那么为什么不能向它添加属性呢?下面的代码清除了我的问题:
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"
如果null
javascript 的值是一个空对象,那么为什么不能向它添加属性呢?下面的代码清除了我的问题:
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"
根据定义,null
值和undefined
值都没有任何属性,也不能向它们添加任何属性。
这很好地总结了null:
表示有意不存在任何对象值的原始值。
同样,对于undefined:
未为变量赋值时使用的原始值。
(null
是 Null 类型undefined
的唯一值,也是 Undefined 类型的唯一值。)
这两种类型都表示基元,“primitiveValue.Property”的行为由内部 ToObject 方法覆盖。(有关兔子洞的开始,请参阅GetValue/PutValue。)
抽象操作 ToObject 根据 .. 将其参数转换为 Object 类型的值。
- 未定义 => 抛出 TypeError 异常。
至于评论,请参阅11.4.3:typeOf 运算符:
根据 .. 返回由 Type(val) 确定的字符串
- 未定义 => “未定义”
null
是 Javascript 中的一个对象,表示没有对象。您不能将属性添加到任何内容。