A bind() metódussal egy objektum kölcsönözhet egy metódust egy másik objektumtól.
Az alábbi példa 2 objektumot hoz létre (személy és tag).
A tagobjektum a teljes név metódust kölcsönzi a személy objektumtól:
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Function bind()</h1>
<p>This example creates 2 objects (person and member).</p>
<p>The member object borrows the fullname method from person:</p>
<p id="demo"></p>
<script>
const person = {
firstName:"John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
document.getElementById("demo").innerHTML = fullName();
</script>
</body>
</html>
Néha a bind() metódust kell használni, hogy megakadályozzuk ez elvesztését.
A következő példában a személy objektum megjelenítési metódussal rendelkezik. A megjelenítési metódusban ez a személy objektumra vonatkozik:
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
person.display();Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Function bind()</h1>
<p>In this example, the person object has a display method:</p>
<p id="demo"></p>
<script>
const person = {
firstName:"John",
lastName: "Doe",
display: function() {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
person.display();
</script>
</body>
</html>
Ha egy függvényt visszahívásként használnak, ez elvész.
Ez a példa megpróbálja megjeleníteni a személy nevét 3 másodperc után, de helyette az undefined jelenik meg:
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
setTimeout(person.display, 3000);Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Function bind()</h1>
<p>This example will try to display a person name after 3 seconds.</p>
<p id="demo"></p>
<script>
const person = {
firstName:"John",
lastName: "Doe",
display: function() {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
setTimeout(person.display, 3000);
</script>
</body>
</html>
A bind() metódus megoldja ezt a problémát.
A következő példában a bind() metódus a person.display személyhez kötésére szolgál.
Ebben a példában 3 másodperc múlva megjelenik a személy neve:
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
let display = person.display.bind(person);
setTimeout(display, 3000);Próbálja ki Ön is →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Function bind()</h1>
<p>This example will display a person name after 3 seconds:</p>
<p id="demo"></p>
<script>
const person = {
firstName:"John",
lastName: "Doe",
display: function() {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
let display = person.display.bind(person);
setTimeout(display, 3000);
</script>
</body>
</html>
A JavaScriptben a ez a kulcsszó egy objektumra utal.
Melyik objektum attól függ, hogy ezt hogyan hívják meg (használják vagy hívják).
A ez a kulcsszó a használat módjától függően különböző objektumokra utal:
Egy objektummetódusban a ez az objektumra utal.
Önmagában ez a globális objektumra utal.
Egy függvényben a ez a globális objektumra utal.
Egy függvényben szigorú módban ez definiálatlan.
Egy eseményben a ez arra az elemre utal, amely az eseményt fogadta.
Olyan módszerek, mint a call(), apply() és a bind() utalhat ezre bármely objektumra.
ez nem változó. Ez egy kulcsszó. A ez értéke nem módosítható.
A JavaScript ezt bemutatója