Autor Zpráva
Yur4Y
Profil
Zdravím,
typeof Function.prototype.call
vracia podľa očakávania function. Keďže call() a apply() sú teda zrejme klasické metódy objektov implementujúcich rozhranie Function, domnieval som sa, že tieto metódy by sa dali zavolať pomocou ďalšej metódy call(), resp. apply(). Aby som to ukázal na kóde, tak som očakával, že zápis:
function x()
{
  return this.x * arguments[0];
}
x.call({x: 4}, 5); //vracia 20 podľa očakávania
sa bude dať prepísať takto:
function x()
{
  return this.x * arguments[0];
}
x.call.call(null, {x: 4}, 5);
Avšak toto vyhadzuje akúsi chybu - Cannot convert WrappedNative to function.
Vie mi niekto vysvetliť, prečo nad call nejde zavolať ďalšiu metódu call? Samozrejme nejde o nič, čo by som nevedel vyriešiť inak, zaujíma ma to z toho teoretického hľadiska.
_es
Profil
Yur4Y:
Výraz x.call.call(null, {x: 4}, 5); sa mi zdá divný.
Ja to vlastne (x.call).call(null, {x: 4}, 5);, teda je v tom výraze jedno, či tam je funkcia x alebo úplne iná funkcia.
A asi sa potom funkcia call pokúša spustiť globálny objekt, v prehliadači window, ako funkciu.
Yur4Y
Profil
Myslím, že už som pochopil, o čo ide. Ďakujem za vysvetlenie.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0