Jestem nowy w JavaScript, a teraz studiuje go ...dwa różne sposoby, aby javascript obiektów
var person = function() {
this.name = "name"
};
var person2 = function() {
var obj = {};
obj.name = "name";
return obj;
};
Załóżmy mamy dwie funkcje pokazane powyżej. Wygląda na to, że obiekty można tworzyć za pomocą dowolnej z tych funkcji. Na przykład)
var p = new person();
var p2 = new person2();
Moje pytanie brzmi: jaka jest różnica między osobą a osobą 2? Czy one są dokładnie takie same? Jeśli nie, który jest bardziej preferowany sposób użycia?
Dzięki
Pierwszy raz jest funkcją konstruktora, drugi to tylko funkcja zwracająca obiekt i może być również wywołana bez 'nowego'. Jest różnica, która powinna się wyjaśnić, gdy czytasz o 'new': https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new. –
@FelixKling Oprócz tego * jest * wywoływane z 'new', który zmienia rzeczy. –
@Andrew: Niezupełnie dlatego, że funkcja * jawnie * zwraca obiekt. Wywołanie go z lub bez "nowego" nie ma znaczenia. (Oczywiście robi to różnicę w tym zakresie, że "to" odnosi się do różnych wartości wewnątrz funkcji, ale nie robi różnicy dla wyniku wywołania funkcji). –