2017-09-19 12 views
5

Po prostu zauważyłem, że przy przypisywaniu zmiennej jako Object, zmienną typu jest "funkcja", natomiast jeśli przypiszę ją jako pusty obiekt przy użyciu literalnego zapisu obiektowego {} lub jako instancję jako, zmienna typu jest obiekt. Co za różnica?Jaka jest różnica między przypisaniem zmiennej jako obiektu i przypisaniem zmiennej jako notacji obiektowej/konstruktorem obiektów?

Proszę zauważyć, że nie pytam o różnicę między notacją literalną obiektu i notacją konstruktora.

enter image description here

+2

'nowy obiekt()' różni się od 'Object'. Ten ostatni jest funkcją konstruktora! – Bergi

+0

'typeof' nie jest funkcją, nie potrzebujesz nawiasów. "typeof a;" jest wystarczające. – Xufox

Odpowiedz

2

a = Object; nie tworzy nowy obiekt. Przypisuje funkcję konstruktora do zmiennej a. Aby utworzyć nowy obiekt, użyj tego kodu: a = new Object();

7

Globalny symbol Object odnosi się do konstruktora funkcji Object . Przypisanie wartości Object do zmiennej powoduje utworzenie kopii tego odwołania i jest zupełnie inne niż przypisanie odwołania do nowego pustego obiektu ({}).

Być może myślisz:

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

tych dwóch stwierdzeń zrobić to samo.

1

let a = new Object();

tworzy nowy obiekt, wydrukowany w {}.

let a = {};

tworzy nowy obiekt, wydrukowany w {}. Niezupełnie różni się od powyższego podejścia.

let a = Object;

Object jest konstruktor, nazywając powróci nowy obiekt, ale lepsze to praktyka, aby użyć słowa kluczowego new do konwencji kodu. Osobiście wybieram użycie let a = {}; w JavaScript. Konstruktor jest funkcją, dlatego konsola powiedziała ci, że właśnie utworzyła funkcję.

4

Po przypisaniu zmiennej jako obiekt to odwołuje się do obiektu funkcji na nim podczas gdy robisz nowy przedmiot lub {} po prostu tworzy zwykły obiekt z metody konstruktora jej jednostki PRZEDMIOT

Można zrozumieć więcej z zrzuty ekranu

enter image description here

enter image description here enter image description here

Powiązane problemy