De inhoud van freecell.js is op een gegeven moment overgeheveld van index.html. Het bevat de meeste JavaScript-code, met uitzondering van de event handlers.
JavaScript kent officiëel geen klassen, alleen objecten, maar het is wel mogelijk de taal zó te gebruiken dat objecten kunnen werken als instanties van klassen.
Een voorbeeld is de 'klasse' [FreeCell], één van de vier vrije cellen linksboven in beeld. De klasse kent een 'constructor', FreeCell(pos), een aantal velden zoals card (de kaart die op de cel ligt) en een aantal methoden zoals draw(g, canvas, imgDeck). Declaratie, definitie en initialisatie daarvan vinden we in een bijzonder subobject met de naam prototype. Deze constructie zorgt ervoor dat elk FreeCell-object dezelfde programmacode deelt en dezelfde velden heeft (maar wel met mogelijk verschillende waarden).
Een ander voorbeeld is het object [Deck], dat zich gedraagt als een singleton, een klasse met één instantie.
Het belangrijkste object van freecell.js is [table], nóg een singleton. Deze bevat referenties naar alle cellen en daarmee naar alle (zichtbare) kaarten. De [Card]-objecten zelf volgen trouwens het flyweight-patroon: ze bevatten alleen een tweetal nummers, net genoeg informatie om het juiste deel van de kaartenplaat te kunnen afbeelden.