Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wywołać konstruktor z metody?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ciembor
Mam sobie taki kod:

Kod
function Screen(id, diagonal, x_resolution, y_resolution)
{
  this.id = id;
  this.diagonal = diagonal;
  this.x_resolution = x_resolution;
  this.y_resolution = y_resolution;
  // tutaj reszta konstruktora
}

Screen.prototype.update = function(diagonal, x_resolution, y_resolution)
{
  this = new Screen(this.id, diagonal, x_resolution, y_resolution);
}


I nie działa (czego się spodziewałem:)).

Kod
invalid assignment left-hand side
[Break on this error] this = new Screen(this.id, diagonal, x_resolution, y_resolution);\n


Chcę napisać metodę, która będzie aktualizowała obiekt po wprowadzeniu nowych danych, właśnie przez wywołanie konstruktora. Wie ktoś jak to ładnie (i skutecznie:D) zrobić?
Quadina
Ja bym zrobił na odwrót, konstruktorem wywoływał funkcje aktualizującą. Między innymi z tego względu, że nie da się tak po prostu pisać do this. Po za tym po co tworzyć nowy obiekt i "zapisywać go" do starego? Czy to nie marnowanie zasobów? Nie wiem też jakie miało by to mieć zastosowanie ;-)
thek
Przecież takie coś tworzy Ci kompletnie nowy obiekt. Nie po to są funkcje update. One mają tylko nadpisać dane w już istniejącym. To co chcesz zrobić jest jak ginekologia w warsztacie samochodowym. Może i zrobisz to jak trzeba, ale czemu chcesz naprawiać auto przez rurę wydechową? winksmiley.jpg
ciembor
Chcę to napisać jak trzeba, dlatego was pytam jak;). Metoda wywoływana konstruktorze - ok, myślałem nad tym i chyba tak zrobię. Ale na prawdę nie da się w żaden sposób wywołac konstruktora istniejącego obiektu? Pytam z czystej ciekawości, w niektórych językach się z tego co mi wiadomo da;).
Quadina
Wywoływanie konstruktora zwykle (patrząc po PHP i Javie) używa się w innym konstruktorze który jest jakby "szerszy". Konstruktor jak sama nazwa wskazuje służy do konstruowania obiektu, więc nie ma się to do aktualizowania tego obiektu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.