Basic JavaScript OOP model object
For your questions:


The usage of this : In my mind, unless you are using closures, do not use self = this, so only keep it in getMissions
Functions in prototype &lt;- Good stuff
Function &lt;> JSON, is an odd question. You want to use constructors, and those are functions.


Other than that,


You are using lowerCamelCase, that is good. Though firstname -> firstName
initialize: function( json ) does not really get a JSON string, instead it gets an object, so I would not name that parameter json
The function to deal with returned missions seems a bit clumsy, I would either assign each new mission to a variable and push it to both arrays:

function( data ){
    var missions = [], mission;
    $(data.missionList).each(function(){
        mission = new Mission(this)
        self.missions.push( mission );
        missions.push( mission );
    });
    callback( missions );
}


or, I would only push to missions and then concatenate missions into self.missions

function( data ){
    var missions = [];
    $(data.missionList).each(function(){
        missions.push(new Mission(this));
    });
    self.missions = self.missions.concat( missions );
    callback( missions );
}



All in all, nice code, very maintainable and self explanatory.