Nelibi se mi, ze nahore pisete, ze vsechno je objekt (i funkce) a ma spolecneho predka Object. Nize pisete, ze funkce je prosta definice a ze neni prirazena k zadnemu objektu. Tak jak tomu mam rozumnet?
Vlákno názorů k článku
Třídy, dědičnost a OOP v Javascriptu - I
Re: funkce objekt/neobjekt?
„Neni prirazena k zadnemu objektu“ – tim autor mysli (alespon ja to tak chapu), ze funkce ve smyslu metody (tedy takova, ktera bude volana s teckou pred nazvem) neni svazana s tridou, u ktere je definovana.
Zatimco tedy v jinych jazycich piseme
class A { public method B() {} }
a je tak patrne, ze B „patri“ k A, tak v JavaScriptu zapis
A.prototype.B = function() {}
nevytvari zadnou logickou vazbu mezi (zcela normalni) funkci B a jeji (tridou) A. Uplne stejneho vysledku by bylo mozno docilit treba zapisem
var B = function() {}
A.prototype.B = B;
B je stale normalni funkce bez jakekoliv vazby na A.
Re: funkce objekt/neobjekt?
Je to jednoduché. Snažím se vysvětlit, kdy se funkci říká funkce, kdy metoda, a kdy konstruktor. To pojmenování nám odlišuje, jakou roli funkce zrovna hraje. Když říkám „funkce je prostá definice a není přiřazena k žádnému objektu.“ tak to prostě znamená, že kdybychom funkci přiřadili třeba do prototype, už bychom jí správně měli říkat metoda. Mrkněte se na definici metody. „A method is a subroutine that is exclusively associated either with a class“. Už je to jasné?