# Function constructor
De functieconstructor in JavaScript is een manier om objecten te maken met behulp van een functie. Wanneer je een functie aanroept met new, wordt er een nieuw object gemaakt en wordt this binnen de functie ingesteld op dat nieuwe object.
// Functieconstructor
function Person(name, age) {
// 'this' verwijst naar het nieuwe object dat wordt gemaakt
this.name = name;
this.age = age;
// Een methode toevoegen aan het object
this.sayHello = function () {
console.log(
`Hello, my name is ${this.name} and I'm ${this.age} years old.`
);
};
}
// Objecten maken met de functieconstructor
const person1 = new Person("Alice", 25);
const person2 = new Person("Bob", 30);
// Objectmethoden aanroepen
person1.sayHello(); // Output: Hello, my name is Alice and I'm 25 years old.
person2.sayHello(); // Output: Hello, my name is Bob and I'm 30 years old.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Syntax
- Schrijf functienamen met een hoofdletter om duidelijke te maken dat het om een functieconstructor gaat.
- Gebruik
newom een nieuw object te maken met de eerder gemaakte functieconstructor. thisbinnen de functie verwijst naar het nieuwe object dat wordt gemaakt.- Je kunt eigenschappen en methoden aan het object toevoegen door ze aan
thistoe te wijzen binnen de functieconstructor.
function Car(make, model) {
this.make = make;
this.model = model;
this.drive = function () {
console.log(`Driving ${this.make} ${this.model}`);
};
}
const myCar = new Car("Toyota", "Camry");
myCar.drive(); // Output: Driving Toyota Camry
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# Toepassingen
Componenten in React zullen worden gemaakt met function constructors.
Profile.jsx
export default function Profile() {
return <img src="https://i.imgur.com/MK3eW3Am.jpg" alt="Katherine Johnson" />;
}
1
2
3
2
3
Person.jsx
import React, { useState } from "react";
function Person(props) {
// Gebruik van de useState hook om de staat te initialiseren
const [state, setState] = useState({
name: props.name,
age: props.age,
});
// Functieconstructor voor het bijwerken van de staat
const updatePerson = () => {
setState((prevState) => ({
...prevState,
age: prevState.age + 1,
}));
};
return (
<div>
<p>{`Name: ${state.name}, Age: ${state.age}`}</p>
<button onClick={updatePerson}>Update Age</button>
</div>
);
}
export default Person;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26