ECMAScript Object Toepassing

Het creëren en vernietigen van objecten gebeurt tijdens de uitvoering van JavaScript, het begrijpen van de betekenis van dit paradigma is cruciaal om het hele taal te begrijpen.

Declaratie en instantiatie

Het creëren van objecten gebeurt door het gebruik van het keyword new gevolgd door de naam van de klasse die wordt geïntanceerd:

var oObject = new Object();
var oStringObject = new String();

De eerste regel maakt een instantie van de Object klasse en slaat deze op in de variabele oObject. De tweede regel maakt een instantie van de String klasse en slaat deze op in de variabele oStringObject. Als de constructor geen parameters heeft, is de rechte haken niet nodig. Daarom kan de bovenstaande twee regels op de volgende manier worden herschreven:

var oObject = new Object;
var oStringObject = new String;

Object verwijzing

In de vorige hoofdstukken hebben we geïntroduceerdConcept van verwijzingstypeIn ECMAScript kan de fysieke weergave van een object niet worden bereikt, alleen de verwijzing naar het object kan worden benaderd. Elke keer dat een object wordt gecreëerd, wordt de verwijzing naar het object opgeslagen in de variabele, niet het object zelf.

Object ongedaan maken

ECMAScript heeft een garbage collection routine die onnodige opslag eenheden verzamelt, wat betekent dat het niet nodig is om objecten specifiek te vernietigen om geheugen vrij te maken. Wanneer er geen verwijzingen meer naar een object zijn, wordt het object ongedaan (dereference) gemaakt. Wanneer de garbage collection routine wordt uitgevoerd, worden alle ongedaan gemaakte objecten vernietigd. Elke keer wanneer een functie zijn code heeft uitgevoerd, wordt de garbage collection routine uitgevoerd om alle lokale variabelen vrij te maken, en in enkele andere onvoorspelbare situaties wordt de garbage collection routine ook uitgevoerd.

Door alle referenties van een object op null te zetten, kan het object dwingend worden opgeheven. Bijvoorbeeld:

var oObject = new Object;
// hier iets met het object doen
oObject = null;

Wanneer de variabele oObject op null wordt gezet, bestaat de referentie naar het eerste gecreëerde object niet meer. Dit betekent dat het object zal worden vernietigd wanneer de garbage collection programma's de volgende keer worden uitgevoerd.

Elke keer dat een object is gebruikt, moet het worden opgeheven om geheugen te vrijmaken, wat een goede gewoonte is. Dit zorgt er ook voor dat niet langer gebruikte objecten niet meer toegankelijk zijn, waardoor programmeerfouten kunnen worden voorkomen. Bovendien hebben oude browsers (zoals IE/MAC) geen volledige garbage collection programma's, dus kunnen objecten niet correct worden vernietigd bij het卸载 van de pagina. Het opheven van objecten en hun eigenschappen is de beste manier om correct geheugengebruik te waarborgen.

Opmerking:Wees voorzichtig bij het opheffen van alle referenties van een object. Als een object twee of meer referenties heeft, moet het object correct worden opgeheven door alle referenties op null te zetten.

Early en late binding

Binding, oftewel de methode om het interface van een object samen te voegen met een objectinstantie.

Early binding verwijst naar het definiëren van de eigenschappen en methoden van een object voordat het object wordt geïntanceerd, zodat de compiler of interpreter de machinecode alvast kan omzetten. Met early binding, zoals in talen zoals Java en Visual Basic, kan met behulp van IntelliSense (de functionaliteit die ontwikkelaars een lijst van eigenschappen en methoden van een object biedt) in de ontwikkelomgeving worden gewerkt. ECMAScript is geen sterk getypte taal en ondersteunt geen early binding.

Aan de andere kant, late binding verwijst naar het feit dat de compiler of interpreter voor de uitvoering niet de type van het object weet. Met late binding hoeft niet het type van het object te worden gecontroleerd, maar alleen of het object de eigenschappen en methoden ondersteunt. Alle variabelen in ECMAScript gebruiken de late binding-methode. Dit maakt het mogelijk om een groot aantal objectoperaties uit te voeren zonder enige straf.