Wpis z mikrobloga

const person = {
name: "Mirek",
greet() {
console.log("Cześć, nazywam się " + this.name + ".");
},
};

setImmediate(person.greet);

#programowanie #javascript

Co zostanie wypisane na konsolę?

  • Nic 10.3% (4)
  • błąd/wyjątek 35.9% (14)
  • Cześć, nazywam się Mirek. 17.9% (7)
  • Cześć, nazywam się undefined. 35.9% (14)

Oddanych głosów: 39

  • 16
  • Odpowiedz
@sidhellfire:

zapomniałeś o nawiasach jeśli chcesz odpalić metodę greet()


zobacz sobię różnice w działaniu pomiędzy

setTimeout(person.greet, 2000);
setTimeout(person.greet(), 2000);
I wywnioskuj dlaczego pierwszy przykład działa jak powinien, a drugi nie

jeżeli to działa tak jak setTimeout to musisz opakować to w callback.

setImmediate(() => person.greet());


To co pokazałeś to wywoływanie jej w niewłaściwy sposób zamiast przekazać referencję, aby zrobiła to funkcja setImmediate/setTimeout w określonym czasie

setTimeout to zwyczajna funkcja, która bierze
  • Odpowiedz
Btw. W metodach tego typu nie powinno się wykorzystywać z this jako referencji do literalnego obiektu bo można to nadpisać: person.greet.bind(twojthis ...) lub person.greet.call(twojthis ...)
  • Odpowiedz