Czytałem różne anglojęzyczne artykuły, tłumaczące czym są prototypy, jednak nadal nie jestem w stanie tego zrozumieć. Pomożecie mi to zrozumieć, na jakimś przykładzie? czy to działa na podobnej zasadzie co np. extend w Sass?
0
0
No fajne wytłumaczenie "Object.prototype reprezentuje obiekt typu prototyp od Object". Bardzo pomocne xD
1
Przykład:
var A = function () {
return { test: function(a) { return a + 1; } };
}
var aa = new A();
aa.test(3); // 4
A.test = function (a) { return a + 2; }
aa.test(3); // 4
var AA = function() {};
AA.prototype.test = function(a) { return a + 1; }
var aaa = new AA();
aaa.test(3); // 4
AA.prototype.test = function(a) { return a + 2; }
aaa.test(3); // 5
Wyjaśnienie własnymi, prostymi słowami:
Jak używasz prototype to metody obiektu nie są powielane podczas jego tworzenia - można w ten sposób oszczędzić pamięć itp.
Prototype nie ma nic wspólnego z extend a tym bardziej z SASS.
0
Dlaczego zmienna var A = function () { return { test: function(a) { return a + 2; }} }; nie nadpisuje poprzedniej zmiennej var A i przy wywołaniu funkcji nadal jest wynik 4 a nie 5? mimo że nadpisano zmienną do zwrócenia a+2 ?