Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Estendere classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913

    Estendere classe

    (Lo script per ora funziona, volevo solo sapere se è il modo giusto o se potrei avere problemi in futuro)

    Stavo cercando un modo per estendere le classi (Tra l'altro, o visto che "extends" è una parola riservata, serve per questo?) e ne ho trovato uno su html.it: http://www.html.it/pag/18596/leredit...in-javascript/

    Peccato che non mi funzioni

    Non da errori, semplicemente non va.

    Ho visto che quando definisco una classe la funzione che la crea è in Classe.prototype.constructor
    codice:
    var Classe = function () {
        this.a = "a";
    }
    
    // Classe.prototype.constructor risulta essere function () { this.a = "a";}
    Allora ho provato a fare così:
    codice:
    ClasseFiglio = ClassePadre;
    ClasseFiglio.prototype.constructor = function () { /* ... */ };
    Però se poi la instanzio
    codice:
    var instanza = new ClasseFiglio();
    constinua a eseguire il costruttore della classe padre...
    No

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Se ti interessa solo accedere ai campi o metodi della superclasse, potresti fare qualcosa del genere:

    codice:
    Object.prototype.extend = function(superclass) {   
      for (var prop in superclass) {
         this[prop] = superclass[prop];
      }
    };
    
    var ClasseA = function () {
        this.a = "a";
        this.metodoClasseA = function(){
          alert("metodoClasseA");
        };
    };
    
    var ClasseB = function () {
        this.b = "b";
        this.extend(new ClasseA());
    };
    
    bClass = new ClasseB();
    alert(bClass.a);
    alert(bClass.b);
    bClass.metodoClasseA();
    Ultima modifica di Vindav; 03-07-2014 a 12:02

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    il problema è che alcune proprietà dell'oggetto padre non sono enumerabili...
    No

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    prova cosi:

    codice:
    var ClasseA = function () {
        this.a = 1;
        this.metodoClasseA = function(){
          alert("metodoClasseA");
        };
    };
    
    
    
    var ClasseB = function () {
        this.b = 2;
        this.somma = function(){
          return this.a + this.b;
        };
    };
    
    ClasseB.prototype = new ClasseA();
    
    
    bClass = new ClasseB();
    alert(bClass.a);
    alert(bClass.b);
    bClass.metodoClasseA();
    alert(bClass.somma());

  5. #5
    Codice PHP:
    function inheritPrototype(childparent) {
        var 
    copyOfParent Object.create(parent.prototype);
        
    copyOfParent.constructor child;
        
    child.prototype copyOfParent;
    }; 
    questa forse fa per te..


    Ah.. un po' di cultura

    http://www.crockford.com/javascript/inheritance.html

    very good
    Ultima modifica di Al_katraz984; 03-07-2014 a 14:43
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Stavo cercando un modo per estendere le classi (Tra l'altro, o visto che "extends" è una parola riservata, serve per questo?) e ne ho trovato uno su html.it: http://www.html.it/pag/18596/leredit...in-javascript/

    Peccato che non mi funzioni
    La funzione dell'articolo credo vada riscritta cosi:

    codice:
    Function.prototype.inherits = function(superclass) {
      this.prototype = new superClass( [].slice.call(arguments, 1) );
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.