Voorwerp()

Met de ingebouwde constructorfunctie Object () kunnen we generieke lege objecten creëren. In feite, als je aan het begin van hoofdstuk 1 herinnert, is dit precies wat we hebben gedaan door het creëren van het cody-object. Laat het cody-object opnieuw creëren.

Voorbeeld: sample69.html

 

Hier gebruiken we alleen het Voorwerp() constructorfunctie om een ​​generiek object genaamd cody te maken. Je kunt denken aan de Voorwerp() constructor als een cookie cutter voor het maken van lege objecten die geen vooraf gedefinieerde eigenschappen of methoden hebben (behalve, natuurlijk, die geërfd van de prototypeketen).

Als het niet voor de hand ligt, de Voorwerp() constructor is een object zelf. Dat wil zeggen, de constructorfunctie is gebaseerd op een object gemaakt op basis van de Functie constructeur. Dit kan verwarrend zijn. Onthoud dat net als de reeks constructor, de Voorwerp constructeur spuugt eenvoudig lege objecten uit. En ja, je kunt alle lege objecten maken die je leuk vindt. Het creëren van een leeg object zoals cody is echter heel anders dan het maken van uw eigen constructorfunctie met vooraf gedefinieerde eigenschappen. Zorg ervoor dat u begrijpt dat cody slechts een leeg object is, gebaseerd op de Voorwerp() constructeur. Als u echt de kracht van JavaScript wilt benutten, moet u niet alleen leren hoe u lege objectcontainers maakt Voorwerp(), maar ook hoe je je eigen "klasse" van objecten kunt bouwen (Persoon()) zoals de Voorwerp() constructorfunctie zelf.


Voorwerp() parameters

De Voorwerp() constructorfunctie neemt één optionele parameter. Die parameter is de waarde die u zou willen creëren. Als u geen parameter opgeeft, dan a nul of onbepaald waarde zal worden aangenomen.

Voorbeeld: sample70.html

 

Als een waarde naast nul of onbepaald wordt doorgegeven aan de Voorwerp constructor, de waarde die wordt doorgegeven, wordt gemaakt als een object. Dus theoretisch kunnen we de Voorwerp() constructor om een ​​van de andere native objecten met een constructor te maken. In het volgende voorbeeld doe ik dat alleen.

Voorbeeld: sample71.html

 

Voorwerp() Eigenschappen en methoden

De Voorwerp() object heeft de volgende eigenschappen (exclusief overgenomen eigenschappen en methoden):

Eigenschappen (Object.prototype;):

  • prototype

Voorwerp() Instance-eigenschappen en -methoden

Voorwerp() objectexemplaren hebben de volgende eigenschappen en methoden (exclusief overgenomen eigenschappen en methoden):

Instance-eigenschappen (var myObject = ; myObject.constructor;):

  • bouwer

Exemplaarmethoden (var myObject = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • toString ()
  • waarde van()

De prototypeketting eindigt met Object.prototype, en dus alle eigenschappen en methoden van Voorwerp() worden overgenomen door alle JavaScript-objecten.


Creëren Voorwerp() Objecten met behulp van "Object Literals"

Het creëren van een "letterlijk object" houdt het instantiëren in van een object met of zonder eigenschappen met behulp van braces (var cody = ;). Weet je nog aan het begin van hoofdstuk 1 toen we het eenmalige cody-object creëerden en vervolgens de eigenschappen van het cody-object aan de hand van puntnotaties gaven? Laten we dat nog een keer doen.

Voorbeeld: sample72.html

 

Let op in de code dat het maken van de cody object en zijn eigenschappen namen vijf verklaringen. Met behulp van de letterlijke notatie van het object kunnen we hetzelfde uitdrukken cody object in één statement.

Voorbeeld: sample73.html

  

Het gebruik van letterlijke notatie geeft ons de mogelijkheid om objecten te creëren, inclusief gedefinieerde eigenschappen, met minder code en om de gerelateerde gegevens visueel in te kapselen. Let op het gebruik van de : en , operatoren in één enkele verklaring. Dit is eigenlijk de voorkeurssyntaxis voor het maken van objecten in JavaScript vanwege de terseness en leesbaarheid.

Houd er rekening mee dat eigenschappennamen ook als tekenreeksen kunnen worden opgegeven:

Voorbeeld: sample74.html

  

Het is niet nodig om eigenschappen als strings te specificeren, tenzij de eigenschapnaam:

  • Is een van de gereserveerde zoekwoorden (klasse).
  • Bevat spaties of speciale tekens (alles behalve cijfers, letters, het dollarteken ($) of het onderstrepingsteken (_).
  • Begint met een nummer.

Voorzichtig! De laatste eigenschap van een object mag geen achterliggende komma hebben. Dit veroorzaakt een fout in sommige JavaScript-omgevingen.


Alle objecten overerven van Object.prototype

De Voorwerp() constructorfunctie in JavaScript is speciaal, net als het prototype eigendom is de laatste stop in de prototypeketen.

In het volgende voorbeeld, vergroot ik de Object.prototype met een foo eigenschap en maak vervolgens een reeks en probeer toegang te krijgen tot de foo eigenschap alsof het een eigenschap van de tekenreeksinstantie is. Sinds de MyString instantie heeft geen foo eigendom, de prototypeketen begint en de waarde wordt gezocht String.prototype. Het is er niet, dus de volgende plek om te kijken is Object.prototype, dat is de uiteindelijke locatie JavaScript zal naar een objectwaarde zoeken. De foo waarde wordt gevonden omdat ik het heb toegevoegd, dus het geeft de waarde van foo.

Voorbeeld: sample75.html

  

Conclusie

Voorzichtig! Alles toegevoegd aan Object.prototype wordt weergegeven in a voor in loop en de prototypeketting. Vanwege dit is er gezegd dat veranderen Object.prototype het is verboden.