Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodanie obiektu do obiektu poprzez prototype.
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Niezbyt wiem jak to sie dokładnie nazywa, ale chodzi mi o poniższy kod.

[JAVASCRIPT] pobierz, plaintext
  1. var Main = function(data) {
  2. this.someData = data;
  3.  
  4. this.doSomethig = function() {
  5. var subObj = new Main.SubObject;
  6. };
  7. };
  8.  
  9. Main.prototype.SubObject = function() {
  10. this.someMethod = function() {
  11.  
  12. }
  13. };
  14.  
  15. // Wywołanie
  16. var app = new Main({ /* data */ });
  17. app.doSomethig();
[JAVASCRIPT] pobierz, plaintext


Niestety, w ostatniej linijce powyższego kodu wykrzacza mi się i pisze, że SubObject jest undefined. Mam nadzięję, że rozumiecie o co mi chodzi - jak to osiągnąć?

Ten post edytował adbacz 10.05.2015, 17:34:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


po pierwsze. Nie
[JAVASCRIPT] pobierz, plaintext
  1. new Main.SubObject;
[JAVASCRIPT] pobierz, plaintext

tylko
[JAVASCRIPT] pobierz, plaintext
  1. (new Main).SubObject;
[JAVASCRIPT] pobierz, plaintext


(nie pytaj mnie, sam się zdziwiłem, że tak nie działa. Ale widać kolejność operatorów new i operatora kropki jest taka, że trzeba nawiasów).

po drugie jeśli piszesz tak:

[JAVASCRIPT] pobierz, plaintext
  1. Main.prototype.SubObject = function() {
  2. this.someMethod = function() {
  3. alert('asd');
  4. };
  5. };
[JAVASCRIPT] pobierz, plaintext

to SubObject jest konstruktorem, który korzysta z this, więc tak samo trzeba new przed nim:
[JAVASCRIPT] pobierz, plaintext
  1. var subObj = new (new Main).SubObject;
[JAVASCRIPT] pobierz, plaintext

(co nie wygląda dobrze pod kątem kodu, ale biorąc pod uwagę sposób w jaki stworzyłeś te obiekty - działa.)
https://jsfiddle.net/agoLzx0f/1/
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 13:59