初心者として、既存のコードを使用して、次のことに遭遇しました。
var foo = {};
これは次のものと同等であると私は信じています:
var foo = new Object();
どの変数も自動的にオブジェクトになるという印象を受けました。したがって、空の変数を宣言するだけでなく、それを具体的にコーディングする目的は何でしょうか。
var foo;
初心者として、既存のコードを使用して、次のことに遭遇しました。
var foo = {};
これは次のものと同等であると私は信じています:
var foo = new Object();
どの変数も自動的にオブジェクトになるという印象を受けました。したがって、空の変数を宣言するだけでなく、それを具体的にコーディングする目的は何でしょうか。
var foo;
どの変数も自動的にオブジェクトであるという印象を受けました
それは間違った印象です。変数を宣言し、それに値を代入しない場合、オブジェクトではない (仕様undefined
で言及され、詳細に説明されているように) に初期化されます (これはプリミティブ値です)。
var foo;
console.log(foo); // undefined
未定義の変数のプロパティを設定しようとすると、TypeError が返されます。
var foo;
foo.example = "hello"; // TypeError: Cannot set property 'example' of undefined
ただし、その変数に空のオブジェクトを割り当てると、上記のコードは成功します。
var foo = {}; // Now refers to an empty object (equivalent to `new Object()`)
foo.example = "hello";
console.log(foo); // '{example:"hello"}'
あなたの理解は、おそらく「JavaScript ではすべてがオブジェクトである」という一般的な誤解から生じていると思います。これは正しくありません。JavaScript の多くはオブジェクトですが、プリミティブ値はそうではありません。例えば:
var a = "hello"; // String primitive, not an object
var b = new String("hello"); // String instance, object
var c = 10; // Number primitive, not an object
var d = true; // Boolean primitive, not an object
var e; // Undefined value, not an object
var f = null; // Null value, not an object
ジェームズの答えは正しいです。彼があまりにも多くの情報をあまりにも迅速に投げかけている場合に備えて (そうであれば、後で参照してください)、ここに簡単な要約を示します。
これは正しいです。 var foo = {} と var foo = new Object() は同等であるだけでなく、結果も同じです。オブジェクト リテラルのみを使用します。(new Object()、new Array() などは無視してください)。
var foo; 変数を宣言する以外は何もしません。デフォルトでは「未定義」です。
var foo = new Object() は、オブジェクトの継承を操作し、javascript で定義された標準オブジェクト関数を呼び出すために使用できるプロトタイプ プロパティも新しいオブジェクトに与えます。
object.protype の操作方法の詳細については、こちらを参照してください。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/prototype