Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Il metodo apply() applicato ai metodi (risolto)
Forum - Javascript - Il metodo apply() applicato ai metodi (risolto)

Avatar
drinoda (Normal User)
Newbie


Messaggi: 8
Iscritto: 08/04/2013

Segnala al moderatore
Postato alle 17:35
Giovedì, 02/05/2013
Salve a tutti, esiste un modo e/o una funzione o metodo simile che si comporti come apply()?

Ho un piccolo problema, ho una classe B derivata da una classe A, e sto facendo "override" di un metodo. Il problema è che mi serve chiamare il metodo della classe 'padre' ma ogni volta che ci provo mi dice che il metodo apply non viene trovato:
Codice sorgente - presumibilmente Php

  1. // LA CLASSE B
  2. function Derivate(labeltitle, labelfor, infodescription){
  3.         this.label = document.createElement("label");
  4.         this.info = document.createElement("p");
  5.        
  6.         // Setting infoerror
  7.         //infoerror.setAttribute("class", "infoerror");
  8.        
  9.         // Setting label
  10.         this.label.setAttribute("class", "labelname");
  11.         this.label.setAttribute("for", labelfor);
  12.         this.label.innerHTML = labeltitle;
  13.  
  14.  
  15.         //Setting infoinput
  16.         this.info.setAttribute("class","infoinput");
  17.         this.info.innerHTML = infodescription;
  18.         this.casa = document.createElement("p");
  19.         this.casa.innerHTML = "pompo nelle frasche";
  20.        
  21. // METODO DI CUI STO FACENDO L'OVERRIDE
  22.         this.asElement = function(type){
  23.        
  24.         //var daddy = BusElement.prototype.asElement.apply(this,type); // <--- NON FUNZIONA
  25.         var daddy = new BusElement(labeltitle, labelfor, infodescription).asElement(type); // PICCOLA SOLUZIONE TEMPORANEA CHE VORREI CAMBIARE
  26.                 daddy.appendChild(this.casa);
  27.         return daddy;
  28.         };
  29. }



In questo caso BusElement.prototype.asElement.apply(this,type); il metodo apply viene preso come metodo della proprietà asElement; qualcuno può dirmi come posso chiamare apply su quel metodo passando la mia classe figlia?

Grazie :k:

____
edit: L'errore che esce nella console di Chrome è il seguente: Uncaught TypeError: Cannot call method 'apply' of undefined
____
edit (soluzione): per sblaglio nella classe padre il metodo asElement lo avevo implementato nella funzione costruttore e non nel prototype. Quindi (penso) per questo motivo per essere 'visibile' dovevo per forza istanziare l'oggetto. :rotfl:

Ultima modifica effettuata da drinoda il 02/05/2013 alle 18:06
PM Quote