JavaScript Object Constructor

voorbeeld

function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

Probeer het zelf

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");

Probeer het zelf

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";

Probeer het zelf

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;
};

Probeer het zelf

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";

Probeer het zelf

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";
}

Probeer het zelf

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;};
}

Probeer het zelf

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");

Probeer het zelf

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

Probeer het zelf

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

Probeer het zelf

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.