JavaScript függvény bind() metódus


Tartalomjegyzék

    Tartalomjegyzék megjelenítése


Funkció Kölcsönzés

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:

Példa

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>

Ez megőrzése

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:

Példa

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:

Példa

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:

Példa

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>


Mi ez?

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.

jegyzet

ez nem változó. Ez egy kulcsszó. A ez értéke nem módosítható.

Lásd még:

A JavaScript ezt bemutatója