JavaScript-konstruktørfunktion (med eksempler)

I denne vejledning lærer du om JavaScript-konstruktørfunktion ved hjælp af eksempler.

I JavaScript bruges en konstruktørfunktion til at oprette objekter. For eksempel,

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();

I ovenstående eksempel function Person()er en objektkonstruktørfunktion.

For at oprette et objekt fra en konstruktørfunktion bruger vi newnøgleordet.

Bemærk : Det betragtes som en god praksis at kapitalisere det første bogstav i din konstruktørfunktion.

Opret flere objekter med konstruktorfunktion

I JavaScript kan du oprette flere objekter fra en konstruktørfunktion. For eksempel,

 // constructor function function Person () ( this.name = 'John', this.age = 23, this.greet = function () ( console.log('hello'); ) ) // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John

I ovenstående program oprettes to objekter ved hjælp af den samme konstruktorfunktion.

JavaScript dette nøgleord

Når JavaScript thisbruges i JavaScript i en konstruktionsfunktion, thishenviser JavaScript til objektet, når objektet oprettes. For eksempel,

 // constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John

Derfor, når et objekt får adgang til egenskaberne, kan det få direkte adgang til ejendommen som person1.name.

JavaScript-konstruktorfunktionsparametre

Du kan også oprette en konstruktorfunktion med parametre. For eksempel,

 // constructor function function Person (person_name, person_age, person_gender) ( // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () ( return ('Hi' + ' ' + this.name); ) ) // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 

I ovenstående eksempel har vi sendt argumenter til konstruktorfunktionen under oprettelsen af ​​objektet.

 const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');

Dette gør det muligt for hvert objekt at have forskellige egenskaber. Som vist ovenfor,

console.log(person1.name); giver John

console.log(person2.name); giver Sam

Opret objekter: Konstruktorfunktion mod objektlitteratur

  • Objektlitteratur bruges generelt til at oprette et enkelt objekt. Konstruktorfunktionen er nyttig, hvis du vil oprette flere objekter. For eksempel,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Hvert objekt oprettet fra konstruktorfunktionen er unikt. Du kan have de samme egenskaber som konstruktorfunktionen eller tilføje en ny egenskab til et bestemt objekt. For eksempel,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Nu er denne ageegenskab unik for person1objekt og er ikke tilgængelig for person2objekt.

Men hvis et objekt oprettes med et objekt bogstaveligt, og hvis en variabel er defineret med den pågældende objektværdi, vil ændringer i variabelværdien dog ændre det originale objekt. For eksempel,

 // using object lateral let person = ( name: 'Sam' ) console.log(person.name); // Sam let student = person; // changes the property of an object student.name = 'John'; // changes the origins object property console.log(person.name); // John

Når et objekt oprettes med et objekt bogstaveligt, vil enhver objektvariabel, der stammer fra objektet, fungere som en klon af det oprindelige objekt. Derfor vil enhver ændring, du foretager i det ene objekt, også reflektere i det andet objekt.

Tilføjelse af egenskaber og metoder i et objekt

Du kan tilføje egenskaber eller metoder i et objekt som dette:

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding property to person1 object person1.gender = 'male'; // adding method to person1 object person1.greet = function () ( console.log('hello'); ) person1.greet(); // hello // Error code // person2 doesn't have greet() method person2.greet();

Produktion

 hej Ikke fanget TypeError: person2.greet er ikke en funktion

I ovenstående eksempel tilføjes en ny egenskab genderog en ny metode greet()til person1objektet.

Denne nye egenskab og metode føjes dog kun til person1. Du kan ikke få adgang til gendereller greet()fra person2. Derfor giver programmet fejl, når vi prøver at få adgangperson2.greet();

JavaScript-objektprototype

Du kan også tilføje egenskaber og metoder til en konstruktorfunktion ved hjælp af en prototype . For eksempel,

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding new property to constructor function Person.prototype.gender = 'Male'; console.log(person1.gender); // Male console.log(person2.gender); // Male

For at lære mere om prototyper, besøg JavaScript Prototype.

JavaScript-indbyggede konstruktører

JavaScript har også indbyggede konstruktører. Nogle af dem er:

 let a = new Object(); // A new Object object let b = new String(); // A new String object let c = new Number(); // A new Number object let d = new Boolean(); // A new Boolean object

I JavaScript kan strenge oprettes som objekter af:

 const name = new String ('John'); console.log(name); // "John"

I JavaScript kan tal oprettes som objekter af:

 const number = new Number (57); console.log(number); // 57

I JavaScript kan booleanske oprettes som objekter af:

 const count = new Boolean(true); console.log(count); // true

Bemærk : Det anbefales at bruge primitive datatyper og oprette dem på en normal måde, såsom const name = 'John';, const number = 57;ogconst count = true;

Du bør ikke erklære strenge, tal og boolske værdier som objekter, fordi de bremser programmet.

Bemærk : I JavaScript blev nøgleordet classintroduceret i ES6 (ES2015), der også giver os mulighed for at oprette objekter. Klasser ligner konstruktorfunktioner i JavaScript. Hvis du vil vide mere, skal du besøge JavaScript-klasser.

Interessante artikler...