Próbuję znaleźć podstawowy wzorzec do tworzenia biblioteki JavaScript (klasa). Chcę zrobić to w taki sposób, aby nie zanieczyściło globalnej przestrzeni nazw masą śmieci, ale pozwoliło klasie mieć zmienne instancji i publiczne metody, które modyfikują te zmienne instancji.Wzorzec biblioteki JavaScript
Rozważmy następujący przykład zabawki. Chcę utworzyć klasę Foo
. Powinien zawierać element instancji, bar
, który jest liczbą. Powinien istnieć konstruktor dla Foo
, który pobiera numer i inicjuje jego instancję bar
z tym numerem. Powinna istnieć metoda instancji, którą można wywołać na obiekcie Foo
w celu zmodyfikowania bar
. Może to kod, który używa biblioteki wygląda tak:
var foo1 = new Foo(1);
var foo2 = new Foo(2);
console.log(foo1.bar); // should print "1"
console.log(foo2.bar); // should print "2"
foo2.changeBar(42);
console.log(foo1.bar); // should print "1"
console.log(foo2.bar); // should print "42"
Powstały foo.js
będzie używany przez aplikację internetową, a zatem zawarte poprzez znacznik skryptu w HTML.
Zrobiłem trochę wyszukiwania w Google, ale jeszcze nie znalazłem jednego, zwięzły, ogólny zarys, jak zaprojektować klasę JavaScript (używane jako biblioteka).
+1 również. Zamknięcie ma pewne subtelne zalety. Możesz zdefiniować "prywatne" funkcje wewnątrz zamknięcia, które może wywoływać Twój prototyp i funkcje członkowskie. – selbie
@ Czy zdefiniowałabyś taką prywatną funkcję i jak by ją nazwać? –
Edytowałem powyższą odpowiedź Evan, aby uwzględnić prywatną metodę. Funkcja "privateMethod" nie może być wywołana z wyjątkiem innych funkcji w obrębie zamknięcia. – selbie