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()
parametersDe 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 methodenDe Voorwerp()
object heeft de volgende eigenschappen (exclusief overgenomen eigenschappen en methoden):
Eigenschappen (Object.prototype;
):
prototype
Voorwerp()
Instance-eigenschappen en -methodenVoorwerp()
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.
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:
klasse
).Voorzichtig! De laatste eigenschap van een object mag geen achterliggende komma hebben. Dit veroorzaakt een fout in sommige JavaScript-omgevingen.
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
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.