JavaScript Object Constructor
- Vorige pagina JS-objectaccesoren
- Volgende pagina JS-objectprototypes
voorbeeld
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
het is een goede gewoonte om de constructorfunctie met hoofdletters te noemen.
objecttype (schaal) (klasse)
het voorbeeld in het vorige hoofdstuk is beperkt. Ze creëren alleen één object.
soms moeten we veel objecten van dezelfde "schaal”.
een manier om een "objecttype" te creëren, is om te gebruikenobject constructorfunctie.
in het bovenstaande voorbeeld,functie Person() is dat object constructorfunctie.
door new het sleutelwoord roept de constructorfunctie aan om dezelfde soort objecten te creëren:
var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "green");
this sleutelwoord
in JavaScript wordt genoemd this
het bezitter van de dingen is de code.
this
de waarde, wanneer deze wordt gebruikt in een object, is dat object zelf.
in de constructorfunctie,this
Het heeft geen waarde. Het is een vervanging voor een nieuw object. Wanneer een nieuw object wordt gecreëerd, wordt de waarde van this het nieuwe object.
Let op this
Het is geen variabele. Het is een keyword. U kunt de waarde van this niet wijzigen.
Eigenschappen toevoegen aan een object
Het toevoegen van een nieuwe eigenschap aan een bestaand object is eenvoudig:
voorbeeld
myFather.nationality = "English";
De nieuwe eigenschap wordt toegevoegd aan myFather. Niet myMother, noch enige andere person-object.
Methoden toevoegen aan een object
Het toevoegen van een nieuwe methode aan een bestaand object is eenvoudig:
voorbeeld
myFather.name = function () { return this.firstName + " " + this.lastName; };
De nieuwe methode wordt toegevoegd aan myFather. Niet myMother, noch enige andere person-object.
Eigenschappen toevoegen aan de constructor
In tegenstelling tot het toevoegen van een nieuwe eigenschap aan een bestaand object, kunt u geen nieuwe eigenschappen toevoegen aan de constructor van een object:
voorbeeld
Person.nationality = "English";
Als u een nieuwe eigenschap wilt toevoegen aan de constructor, moet u deze toevoegen aan de constructor-functie:
voorbeeld
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = "English"; }
Op deze manier kunnen objecteigenschappen standaardwaarden hebben.
Methoden toevoegen aan de constructor
Uw constructor-functie kan ook methoden definiëren:
voorbeeld
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.name = function() {return this.firstName + " " + this.lastName;}; }
In tegenstelling tot het toevoegen van een nieuwe methode aan een bestaand object, kunt u geen nieuwe methoden toevoegen aan de constructor van een object.
Het is noodzakelijk om een methode toe te voegen aan een object binnen de constructor-functie:
voorbeeld
function Person(firstName, lastName, age, eyeColor) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.eyeColor = eyeColor; this.changeName = function (name) { this.lastName = name; }; }
De functie changeName() toewijst de waarde van name aan de lastName-eigenschap van person.
Nu kun je proberen:
myMother.changeName("Jobs");
door myMother
vervangt this,JavaScript kan aangeven welke persoon hij momenteel verwerkt.
Ingebouwde JavaScript constructoren
JavaScript biedt constructoren voor primitieve objecten:
voorbeeld
var x1 = new Object(); // Een nieuwe Object object var x2 = new String(); // Een nieuwe String object var x3 = new Number(); // Een nieuwe Number object var x4 = new Boolean(); // Een nieuwe Boolean object var x5 = new Array(); // Een nieuwe Array object var x6 = new RegExp(); // Een nieuwe RegExp object var x7 = new Function(); // Een nieuwe Function object var x8 = new Date(); // Een nieuwe Date object
Math()
Objecten zijn hier niet inbegrepen. Math is een globale object.new
Sleutelwoorden kunnen niet worden gebruikt met Math.
Wist je dat?
Zoals je kunt zien, biedt JavaScript objectversies van de primitieve data types string, nummer en boolean. Maar er is geen reden om complexe objecten te maken. Primitieve waarden zijn veel sneller!
Gebruik een object-literaal {}
vervangt new Object()
.
Gebruik een string-literaal ""
vervangt new String()
.
Gebruik een getal-literaal in plaats van Number()
.
Gebruik een boolean-literaal in plaats van new Boolean()
.
Gebruik een array-literaal []
vervangt new Array()
.
Gebruik een patroon-literaal in plaats van new RegExp()
.
Gebruik een functie-expressie () {}
vervangt new Function()
.
voorbeeld
var x1 = {}; // 新对象 var x2 = ""; // 新的原始字符串 var x3 = 0; // 新的原始数值 var x4 = false; // 新的原始逻辑值 var x5 = []; // Nieuw arrayobject var x6 = /()/ // Nieuw regulieraalobject var x7 = function(){}; // Nieuw functieobject
Tekstobjecten
Meestal worden strings gemaakt als primaire waarden: var firstName = "Bill"
Maar je kunt ook gebruiken new
Objecten maken met sleutelwoorden: var firstName = new String("Bill")
Gelieve in JS-tekstIn dit hoofdstuk leren we waarom het niet aanbevolen wordt om strings als objecten te maken.
Getalobjecten
Meestal worden getallen gemaakt als primaire waarden: var x = 456
Maar je kunt ook gebruiken new
Objecten maken met sleutelwoorden: var x = new Number(456)
Gelieve in JS-getallenIn dit hoofdstuk leren we waarom het niet aanbevolen wordt om getallen als objecten te maken.
Booleaanse objecten
Meestal worden logische waarden gemaakt als primaire waarden: var x = false
Maar je kunt ook gebruiken new
Logische objecten maken met sleutelwoorden: var x = new Boolean(false)
Gelieve in JS-logicaIn dit hoofdstuk leren we waarom het niet aanbevolen wordt om logische waarden als objecten te maken.
- Vorige pagina JS-objectaccesoren
- Volgende pagina JS-objectprototypes