Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Chiamare funzioni che si trovano in un oggetto

    Ho il seguente codice:

    function vai() { SW.vai.apply(SW, arguments); }
    function titolo() { SW.titolo.apply(SW, arguments); }
    function testo() { SW.testo.apply(SW, arguments); }
    function testoNl() { SW.testoNl.apply(SW, arguments); }
    function scelta() { SW.scelta.apply(SW, arguments); }
    (e così via)

    Come vedete, in questo caso, ogni funzione chiama la funzione omonima nell'oggetto SW passando gli argomenti che ha ricevuto. (vi chiederete il perchè di una cosa simile... beh, SW dovrà essere usato da non-programmatori, questo codice semplifica la sintassi e soprattutto mi permette di tradurre i nomi delle funzioni nella lingua dell'utente)

    La mia domanda è: esiste un modo meno stupido e più efficiente per fare la stessa cosa? Ho provato con .bind() ma non funziona (forse sbagliavo qualcosa io?)

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669

    Re: Chiamare funzioni che si trovano in un oggetto

    Originariamente inviato da in the web
    La mia domanda è: esiste un modo meno stupido e più efficiente per fare la stessa cosa? Ho provato con .bind() ma non funziona (forse sbagliavo qualcosa io?)
    codice:
    var vai = SW.vai, titolo = SW.titolo, testo = SW.testo, testoNl = SW.testoNl, scelta = SW.scelta;

  3. #3
    Eh no... se facessi così copierei il codice di SW.vai in window.vai, e quando this viene nominato dentro la funzione si riferirebbe a window invece di SW

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Se usi l'oggetto this devi usare per forza bind:

    codice:
    var persona = {
    	nome: "Mario",
    	cognome: "Rossi",
    	impiego: "operaio",
    	toString: function() { return this.nome + " " + this.cognome + " - " + this.impiego; }
    }
    
    var collegamento = persona.toString.bind(persona);
    
    alert(persona.toString());
    alert(collegamento());

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    …nel tuo caso devi fare così:

    codice:
    var vai = SW.vai.bind(SW), titolo = SW.titolo.bind(SW), testo = SW.testo.bind(SW), testoNl = SW.testoNl.bind(SW), scelta = SW.scelta.bind(SW);

  6. #6
    Funziona, grazie! Era quello che cercavo di fare all'inizio, ma sbagliavo.
    Potenza della dialettica! xD

  7. #7
    Come non detto: funziona con Gecko e Chrome, ma non funziona con Webkit e Opera

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 © 2024 vBulletin Solutions, Inc. All rights reserved.