2017-09-19 6 views
5

変数をObjectとして割り当てるとき、変数の型は '関数'ですが、オブジェクトのリテラル表記{}を使用して空のオブジェクトとして代入するか、new Objectとしてインスタンス化すると、変数typeofはオブジェクト。 ここで違いは何ですか?変数をObjectとして代入し、変数をObject Literal Notation/Object Constructor Notationとして割り当てることの違いは何ですか?

オブジェクトのリテラル表記とコンストラクタ表記法の違いはわかりません。

enter image description here

+2

'新しいオブジェクト()' 'Object'は異なっています。後者はコンストラクタ関数です! – Bergi

+0

'typeof'は関数ではないので、かっこは必要ありません。 'typeof a;'で十分です。 – Xufox

答えて

2

a = Object;新しいオブジェクトを作成しません。変数aにコンストラクタ関数を割り当てます。新しいオブジェクトを作成するには、次のコードを使用します。a = new Object();

7

グローバルシンボルObjectは、オブジェクトコンストラクタ関数を参照しています。変数にObjectを代入すると、その参照のコピーが作成され、新しい空オブジェクト({})への参照を割り当てることとはまったく異なります。

おそらく、あなたが考えている:

var a = new Object(); 
var b = {}; 

これらの二つの文は同じことを行います。

1

let a = new Object();

{}として印刷新しいオブジェクトを作成します。

let a = {};

{}として印刷新しいオブジェクトを作成します。上記のアプローチとはまったく異なるわけではありません。

let a = Object;

Object、それは新しいオブジェクトを返しますが、それは、コードの規則のためのnewキーワードを使用するより良い練習だ呼び出し、コンストラクタです。私は個人的にはlet a = {};をJavaScriptで使用することを選択しました。コンストラクタは関数なので、コンソールが関数を作成したばかりだと言った理由です。あなたは新しいオブジェクトまたは{}を行うときに、それはちょうどそれのコンストラクタメソッドでプレーンオブジェクトは、親オブジェクト

だあなたはより多くを理解することができます作成​​し、一方、それはその上にオブジェクト機能を参照するオブジェクトとして変数を割り当てる

4

スクリーンショット

enter image description here

enter image description here enter image description here

関連する問題