Opiszę wzór Douglasa Crockforda, aby naśladować styl używany w językach programowania obiektowego. Nie używa prototypowego dziedziczenia. W rezultacie jest nieco mniej efektywny, ponieważ każdy obiekt musi przechowywać odniesienie do każdej metody. Ale jest to bardzo przydatne do celów ilustracyjnych.
Encapsulation:
function MyClass (a, b)
{
this.publicProperty = 1;
var _privateProperty = 2;
function _privateMethod() {
// only private methods and privileged methods can call this
};
this.publicMethod = function() {
// can access _privateProperty and call _privateMethod
};
}
MyClass.classMethod = function() {
// not tied to any instances
};
Wystarczy utworzyć obiekty z var instance = new MyClass(a, b);
dziedziczenia:
function DerivedClass(a, b, c)
{
// must explicitly call superclass constructor, like in Java
MyClass.apply(this, arguments);
this.anotherProperty = 3;
function _anotherPrivateMethod() { };
this.publicMethod = function() {
// can access _privateProperty and call _privateMethod
};
}
DerivedClass.classMethodMethod = function()
{
// not tied to any instances
};
Polimorfizm w JavaScript jest najczęściej zastępuje wpisując kaczka (http://en.wikipedia.org/wiki/Duck_typing). Programiści zazwyczaj grupują metody/właściwości pod obiektami, a ty po prostu testujesz obecność tych obiektów. W ten sposób wykrywane są na przykład możliwości przeglądarki newfangles.
Abstrakcja jest ściśle związana z polimorfizmem - o ile coś obsługuje interfejs, zwykle nie dba o to, jak działa pod spodem. W ten sposób możesz pobrać bibliotekę JavaScript i po prostu użyć jej w oparciu o jej dokumentację.
Mam nadzieję, że to pomoże.
Dlaczego nie znajdziesz problemu, który Cię interesuje, i sprawdź, czy możesz go rozwiązać za pomocą tych technik, a następnie wrócić, jeśli masz konkretne problemy techniczne. Niektóre z tych pojęć nie są tak ważne lub są inaczej implementowane w JS w porównaniu do języków takich jak C++. – Aesthete
Powinieneś przeglądać artykuły w wolniejszym tempie. Absorpcja rzeczy powoli zmniejsza zamieszanie. Powiedział, że głosuję, aby zamknąć to pytanie, ponieważ żądania tutoriala nie dotyczą tematu przepełnienia stosu. –
Powinieneś przeczytać o różnicach między klasami i prototypami. Na przykład dobra odpowiedź mówi o klasycznym dziedziczeniu i prototypowym dziedziczeniu: http://stackoverflow.com/a/186279/1068746. Po prawidłowym otrzymaniu prototypów reszta to bułka z masłem. –