reprezentare logo Kosson

Pentru că există foarte puțină documentați în limba română pentru JavaScript m-am hotărât să scriu și eu câte ceva. Pentru că îmi place să și desenez, am făcut o schemă după explicațiile lui Kyle Simpson.

JavaScript este un limbaj bazat pe moștenire prototipală - prototypal inheritance

Mantre
- Nu există clase!
- Motorul Javascript construiește automat o metodă Obiect în obiectul window. Această metodă are un obiect foarte important care se numește prototype.
- În cazul tuturor funcțiilor, motorul JavaScript generează un obiect prototype (numeFunctie.prototype).
- Funcțiile sunt legate de obiectul prototip prin metoda .constructor
- Funcțiile nu sunt cele care generează obiectul prototype.
- Fiecare funcție are un prototype object diferit.
- O funcție apelată cu ```new``` în fața sa este un constructor.
- Obiectele pot moșteni alte proprietăți direct din alte obiecte
- [[Prototype]], adică proprietatea .prototype este o legătură de la un obiect la altul. Se obține legătura prin Object.create() sau ca efectul numărul 2 al folosirii cuvântului cheie ```new```. Mecanismul pe care-l realizează .prototype este unul de delegare a cererii pentru referința unei proprietăți sau metode către un oiect mai sus pe lanțul prototipal către un alt obiect.

Observații:
Mai întâi de orice este obiectul window.
Obiectul window are o metodă numită Object [ function Object() ].
Object.prototype este un obiect în care poți adăuga propriile proprietăți și metode.

Model

function Foo(who){
  this.me = who;
}

Foo.prototype.identify = function(){
  return "I'm " + this.me;
}

var a1 = new Foo("a1");
var a2 = new Foo("a2");

a2.speak = function(){
  alert("Hello, " + this.identify() + ".");
};

a1.constructor === Foo;
a1.constructor === a2.constructor;
a1.__proto__ === Foo.prototype;
a1.__proto__ === a2.__proto_;

Prototype