Quando utilizzare Prototipi e l'uso corretto di Prototipi (Javascript)

4

Ho programmato in Javascript per un po 'e mi sento abbastanza a mio agio. E conosco il concetto di base dei prototipi e li ho anche usati alcune volte. Ma una cosa che non riesco a capire è quando dovrebbe essere usato un prototipo.

E qual è l'uso corretto dei prototipi. Ad esempio:

Attualmente sto creando un sistema di gestione delle attività. All'interno di questo sistema è possibile creare progetti, quindi a ciascun progetto possono essere aggiunte più attività. Attualmente ho creato la funzionalità di creare progetti.

Tutti i progetti utente sono salvati in una matrice nel mio database MongoDB. Una volta che un utente crea un progetto, viene aggiunto all'array dei progetti. Successivamente ho creato una funzione getProjects. Questa funzione utilizza una richiesta GET e recupera tutti i progetti per l'utente che ha effettuato l'accesso. Una volta recuperati i dati, salvi l'array di progetti in una variabile angolare:

CREATE Projects:

  // Create Project Function
 $scope.createProject = function(id){
    var pTitle = document.getElementById("pojectTitle").value;
    console.log("Entered create Project fucntion");
    console.log("user id is" + id);
    console.log(pTitle);

    // Simple POST request example (passing data) :
    $http.post("/createProject/"+ id +"", {
        projectTitle: pTitle,
        userID      : id
    }).
    success(function(data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
        $scope.getProjects();
        console.log("project created");
        console.log("this is the response data " + data);
    }).
    error(function(data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
 };

GET Projects:

$scope.getProjects = function(id) {
   console.log("getting user projects, please wait ......");
   // Simple GET request example (passing data) :
   $http.get("/user/projects/" + id + "", {

   }).
   success(function(data, status, headers, config) {
       // this callback will be called asynchronously
       // when the response is available

       $scope.userProjects = data;
       console.log("user projects are here " + $scope.userProjects);

   }).
   error(function(data, status, headers, config) {
       // called asynchronously if an error occurs
       // or server returns response with an error status.
   });

 };

Tutti i dati JSON restituiti dalla richiesta precedente sono salvati in:

   $scope.userProjects = [];

Attualmente sto usando la ng-repeat di angular nel mio file HTML per fare un loop attraverso l'array userProjects e creare un Div per ciascun progetto nell'array (all'interno di ng-repeat). E nel centro dello scrittore div il nome del progetto. Vedi sotto:

Oraeccolamiadomanda

Vogliorendereognidiv"cliccabile" a quando un utente fa clic su div è diretto a un'altra pagina in cui possono aggiungere attività all'interno del progetto.

Ho pensato di utilizzare la funzionalità di Prototipo per collegare i collegamenti a ciascun div. Quindi il mio pensiero era che avrei creato la classe Projects nel mio controller angolare e mentre eseguivo il ciclo attraverso l'array del progetto restituito dalla richiesta GET, per ogni progetto nell'array creerò un'istanza (oggetto) di quella classe e aggiungerò un evento cliccabile per ogni div.

È un buon approccio? È un buon uso del prototipo? Dovrei persino usare i prototipi? In caso contrario, quali consigli potresti fare?

Se hai bisogno di ulteriori informazioni per rispondere alla domanda, fammi sapere.

Grazie in anticipo.

    
posta Lorenzo von Matterhorn 11.07.2015 - 15:38
fonte

1 risposta

1

L'uso corretto dei prototipi in JavaScript dipende da ciò che si desidera ottenere. La comprensione di cosa sia un prototipo e perché esiste è un'ottima domanda.

Il prototipo esiste in JavaScript, perché gli oggetti non hanno l'ereditarietà classica in base a una classe, come nelle lingue tradizionali. In JavaScript, oggetti sono coppie di chiavi e valori. Hanno una proprietà aggiuntiva : un puntatore a un altro oggetto: il prototipo dell'oggetto. È importante sapere che ogni funzione è un oggetto di prima classe in JavaScript.

Il prototipo viene utilizzato principalmente per l'ereditarietà; aggiungi metodi e proprietà al prototipo di una funzione per rendere disponibili metodi e proprietà alle sue istanze. Ogni oggetto eredita le proprietà da un oggetto ed è il genitore dell'oggetto. Ciò rende la proprietà prototipo come una proprietà di classe: tutte le istanze derivanti dalla stessa classe genitore hanno accesso a questa proprietà.

Se non utilizzi la proprietà, sarà una proprietà statica , associata a quel particolare tipo di istanza senza ereditarietà.

Quindi, quando usare i prototipi? I prototipi sono per l'ottimizzazione. Come stai pensando negli oggetti e vuoi gli attributi condivisi per uno specifico dominio problematico, questa è una buona ragione per usare la proprietà prototype per implementarla.

    
risposta data 02.08.2015 - 16:50
fonte

Leggi altre domande sui tag