1

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

2 に答える 2

8

定義上、値にnullundefined値にもプロパティはなく、プロパティを追加することもできません。

これはnullについてうまく要約されています:

オブジェクト値が意図的に存在しないことを表すプリミティブ値。

同様に、未定義の場合:

変数に値が割り当てられていない場合に使用されるプリミティブ値。

nullはNullタイプundefinedの唯一の値であり、Undefinedタイプの唯一の値です。)

さて、実装グッズについては:

これらのタイプは両方ともプリミティブを表し、「primitiveValue.Property」の動作は内部のToObjectメソッドによってカバーされます。(うさぎの穴の始まりについては、GetValue / PutValueを参照してください。)

9.9から:ToObject

抽象操作ToObjectは、その引数を..に従ってObject型の値に変換します。

  • Undefined=>TypeError例外をスローします。
  • Null=> TypeError例外をスローします。
  • (等々)

コメントに関しては、11.4.3:typeOf演算子:を参照してください。

に従ってType(val)によって決定された文字列を返します。

  • 未定義=>「未定義」
  • Null=> "オブジェクト"
  • (等々)
于 2013-01-15T20:27:32.667 に答える
1

nullオブジェクトがないことを表すJavascriptのオブジェクトです。プロパティを何にも追加することはできません。

参照:nullがオブジェクトである理由と、nullとundefinedの違いは何ですか?

于 2013-01-15T20:29:23.217 に答える