Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Igor70
    Registrato dal
    Aug 2002
    Messaggi
    131

    [javascript] Classical Inheritance x espertissimi

    Qualcuno mi puo aiutare a capire perche nel documento di seguito citato il seguente codice non funziona:

    Parenizor.method('setValue', function (value) {
    this.value = value;
    return this;
    });

    Il Link è:
    http://www.crockford.com/javascript/inheritance.html

    In particolare che senso ha scrivere
    miaClasse.method(...

    La cosa mi pare molto interessante ma non capisco come il Sig. Douglas Crockford intende implementara, cosa mi sono perso?!?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Boh.... Secondo me il codice non basta x essere funzionante.

    Ho tradotto il suo codice in un'altra maniera per scrivere gli oggetti e vedrai che ho dovuto aggiungere delle dichiarazioni.

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    function Parenizor(value) {
        this.value = null;
        this.setValue = _setValue;
    		this.toString = _toString;
    		this.getValue = _getValue;
    		//
    		this.setValue(value);
    }
    
    function _setValue(value) {
        this.value = value;
        return this;
    }
    
    function _getValue() {
        return this.value;
    }
    
    function _toString() {
        return '(' + this.getValue() + ')';
    }
    
    myParenizor = new Parenizor(0);
    myString = myParenizor.toString();
    alert(myString);
    //-->
    </script>

  3. #3
    Utente di HTML.it L'avatar di Igor70
    Registrato dal
    Aug 2002
    Messaggi
    131
    Ok, ma cosi casca il palco )

    Il gioco sta proprio nella forma usata da Crockford.

    Il concetto dovrebbe essere tipo:

    miaClasse.aggiungiMetodo('nomeMetodo', implementazione{});

    Ma se non erro lui utilissa "method" come una parola chiave del linguaggio e questo a me non risulta.

    Forse potrebbe funzionare cosi:

    function method (_name, _implementation){
    return method;
    }

    e quindi aggiungere al volo il metodo dicendo

    miaClasse.nuovoMetodo (...

    Il fatto è che nella documentazione di Crockford la funzione method non viene descritta e questo invalida gran parte della rimanente.
    O lui la sottointende oppure intende qualcos'altro, secondo voi??

  4. #4
    Utente di HTML.it L'avatar di Igor70
    Registrato dal
    Aug 2002
    Messaggi
    131
    Chiedo scusa,
    nella parte finale del documento c'era appunto descritto il codice mancante vale a dire:

    Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
    };

    con questo è tutto molto piu chiaro )

    Vorrei cogliere l'occasione per conoscere la vostra opinione in merito a questo modo di utilizzare javascript.
    Apparentemente Crockford da per scontato che questa sia la "tecnica migliore", a vostro avviso lo è?
    Quali potrebbero essere gli svantaggi/rischi di un'approccio che tende probabilmente a forzare l'uso di tecniche per cui il linguaggio non è predisposto.

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.