1

如果nulljavascript 的值是一个空对象,那么为什么不能向它添加属性呢?下面的代码清除了我的问题:

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"
4

2 回答 2

8

根据定义,null值和undefined值都没有任何属性,也不能向它们添加任何属性。

这很好地总结了null

表示有意不存在任何对象值的原始值。

同样,对于undefined

未为变量赋值时使用的原始值。

(null是 Null 类型undefined的唯一值,也是 Undefined 类型的唯一值。)

现在,对于实现的好处:

这两种类型都表示基元,“primitiveValue.Property”的行为由内部 ToObject 方法覆盖。(有关兔子洞的开始,请参阅GetValue/PutValue。)

9.9 开始: ToObject

抽象操作 ToObject 根据 .. 将其参数转换为 Object 类型的值。

  • 未定义 => 抛出 TypeError 异常。
  • Null =>抛出 TypeError 异常。
  • (等等)

至于评论,请参阅11.4.3:typeOf 运算符

根据 .. 返回由 Type(val) 确定的字符串

  • 未定义 => “未定义”
  • 空=> “对象”
  • (等等)
于 2013-01-15T20:27:32.667 回答
1

null是 Javascript 中的一个对象,表示没有对象。您不能将属性添加到任何内容。

另请参阅:为什么 null 是一个对象以及 null 和 undefined 之间的区别是什么?

于 2013-01-15T20:29:23.217 回答