Introduktion till Constructor i JavaScript
Konstruktormetoden i JavaScript är en speciell metod som används för att skapa och initiera objekt inom en klass. Detta är vad en konstruktör på alla programmeringsspråk gör. Det som gör JavaScript-konstruktören annorlunda än andra är friheten när det gäller syntax. För att förstå det bättre öppnar du bara webbläsarutvecklingsverktygen (Ctrl / Cmd + Shift + C) och går till fliken Konsol i fönstret för utvecklarverktyg.
Det ser ut så här i Chrome
Detta är lekplatsen för de flesta JavaScript-relaterade koncept. Vi skulle använda denna lekplats i hela denna artikel.
Typer av konstruktörer i JavaScript
Det finns två typer av konstruktörer i JavaScript
1. Inbyggda konstruktörer
Dessa är de lättillgängliga konstruktörerna som levereras med exekveringsmiljön. Användaren behöver helt enkelt påkalla dem och viola, arbetet är gjort. Exempel på inbyggda konstruktörer är Array, Date och Object.
2. Användardefinierade konstruktörer
Dessa är de konstruktörer som deklarerats och definierats av programmeraren som ska användas i hela applikationen. En programmerare kan också definiera egenskaper och metoder för sina egna anpassade typer. De är också kända som anpassade konstruktörer. I enlighet med konventionen är alla JavaScript-konstruktörer meningslösa. Detta för att berätta för personen som använder dem att den här funktionen måste åberopas med det nya nyckelordet.
Hur fungerar konstruktörer i JavaScript?
Innan vi tittar på syntaxen för JavaScript-konstruktörer måste vi förstå ett mycket grundläggande JavaScript-koncept -
- Objektklassen sammanfattar i samband med denna artikel alla JavaScript-objekt skapas av Objektkonstruktören. Om värdet som levereras när objektet skapas är noll eller odefinierat kommer objektkonstruktören att skapa ett tomt objekt. Annars skapar det ett objekt av den definierade typen medan objektet skapas.
- Varje gång ett nytt objekt av klasstypen deklareras returnerar det nya sökordet en referens till det nyskapade objektet. Det objektet nås med hjälp av detta nyckelord i konstruktören för att initiera objektets egenskaper.
- Trots att tekniskt har JavaScript inga klasser men har konstruktörer och prototyper för att få liknande funktioner. I ECMAScript 2015 introducerades begreppet klasser i JavaScript. Detta var helt enkelt ett syntaktiskt tillägg till befintlig prototypbaserad arv och lägger inte till någon ny funktionalitet till språket.
Syntax och exempel på konstruktör i Javascript
1) Konstruktormetod
Nedan visas konstruktormetoden. Den här metoden används i klassens prototyp.
Syntax
constructor((arguments))( … )
Koda
class Employee(
constructor(id, name)(
this.id = id;
this.name = name;
))
var emp1 = new Employee(123, "John");
console.log(emp1.name);
Produktion:
2) Objektkonstruktör (inbyggda konstruktörer)
Objektkonstruktören kallas direkt när ett objekt i klassen Objekt skapas. Detta skapar ett objekt av klassobjekt om noll eller odefinierade parametrar skickas som argument. Annars skapas ett objekt av typen av givna parametrar.
Syntax
new Object(( value ))
Eller
new Array(( value ))
Eller
new Date(( value ))
Eller
new String(( value ))
Eller
new Number(( value ))
Eller
new Boolean(( value ))
Eller
new Function(( value ))
Eller
new Error(( value ))
Eller
new RegExp(( value ))
och så vidare…
Koda:
var name = new Object("John");
var age = new Object(28);
console.log("Name : "+name+" & Age : "+age);
Produktion:
3) Array- och Date-konstruktörer
På liknande sätt kan Array- och Date-konstruktörer också användas för att skapa objekt av respektive typ.
Koda:
var alphabets = new Array('Apple', 'Ball', 'Cat');
console.log(alphabets);
Produktion:
Koda:
var now = new Date();
console.log(now);
Produktion:
Koda:
var err = new Error("A user-defined error has occurred.");
console.log(err);
Produktion:
4) Anpassade konstruktörer
Vi kan också förklara och definiera våra egna konstruktörer som ska användas under hela vår applikation. Låt oss titta på hur detta kan uppnås.
Syntax
function FunctionName((arguments))( … )
Koda
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + book.name + '\' authored by ' + book.author + ' in the year ' + book.year + '.');
)
var book1 = new Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = new Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = new Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Produktion:
Betydelsen av det nya sökordet
Nu undrar du kanske om jag inte använder det nya sökordet? Kan jag utelämna det nya sökordet? Tja, min vän, nej. Att använda det nya sökordet är mycket viktigt.
- JavaScript-konstruktörer är vanliga funktioner. De åtföljs av ett nytt nyckelord för att berätta för JavaScript-motorn att ett nytt objekt måste byggas med de givna egenskaperna. Utan det nya sökordet skulle du helt enkelt skapa fler och fler globala objekt.
- Det nya nyckelordet returnerar en referens till det nyskapade objektet. Vi lagrar sedan denna referens i en variabel. Utan det nya nyckelordet skapas objektet, men ingen hänvisning till objektet returneras. Objektet antar ett globalt omfång. Den enda hänvisningen till detta objekt är genom fönsterobjektet.
- Förvirrad? Låt oss förstå bättre med exempel. Överväg exemplet ovan igen. Vi tog bort det nya nyckelordet från objektdeklarationerna. Resultatet var ett undantag från odefinierade variabler. Detta beror på att utan det nya nyckelordet de nyskapade objektens referens inte returnerades och därför inte lagrades i våra variabler book1, book2 och book3. När vi försökte få åtkomst till dessa variabler i visningsbokmetoden kastas undantaget.
Koda:
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + book.name + '\' authored by ' + book.author + ' in the year ' + book.year + '.');
)
var book1 = Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Produktion:
I samma exempel, om vi modifierar visningsbokmetoden för att få åtkomst till objekt genom fönsteromfång, får vi en out-förväntad utgång.
Koda:
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + window.name + '\' authored by ' + window.author +' in the year ' + window.year + '.');
)
var book1 = Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Produktion:
Som en övning gör du nu en liten brainstorming för att ta reda på varför vi får denna produktion!
Omfattningssäkra konstruktörer
De inbyggda konstruktörerna i JavaScript är omfattande-säkra konstruktörer. De skapar inte globala omfattningsvariabler när de anropas utan ett nytt nyckelord. Således kan dessa objekt skapas säkert med eller utan ett nytt nyckelord.
Koda
function SampleFn(argument) (
// if "this" is not an instance of the constructor
// it means it was called without new
if (!(this instanceof SampleFn)) (
// call the constructor again with new
return new SampleFn(argument);
)
// The code to construct properties and methods
)
Ja, du kan också skapa användardefinierade omfattningssäkra konstruktörer. Fortsätt, skapa en omfattningssäker konstruktör för våra böcker i exemplet ovan.
Slutsats
Den här artikeln gav en djupgående demonstration av JavaScript-konstruktörerna. Detta hjälper också till att förstå hur JavaScript fungerar. Det viktiga att komma ihåg här är att även om det tekniskt inte finns några klasser i JavaScript, tillhandahåller metoderna och prototyperna liknande funktioner till utvecklarens förfogande. Och ja, det nya nyckelordet är viktigt.
Rekommenderade artiklar
Detta har varit en guide till Constructor i JavaScript. Här diskuterar vi dess typer och viktiga metoder med Hur man skapar en omfattningssäker konstruktör Du kan också gå igenom våra givna artiklar för att lära dig mer-
- Vad Javascript kan göra?
- Vad är JavaScript?
- Hur man installerar JavaScript
- Destructor i Java
- Regex-funktioner i Python (exempel)
- Exempel på detta sökord
- Working & regler för förekomst av i Java med exempel