Obecnie przepisuję trochę naukowego kodu C++ za pomocą Javascript i chciałbym zachować tę samą podstawową organizację, jeśli w ogóle jest to możliwe. W kodzie C++ istnieje wiele klas, które zawierają wiele danych z wielu różnych tablic i serii public static
metod, które działają na tych danych. Walczę z tym, jak zreplikować coś takiego w JavaScript.Jak "ukryć" zmienne w JavaScript podczas eksponowania publicznych metod statycznych?
Obecnie używam coś jak następuje:
function mars(){}
mars.x = [{A:1, B:2, C:3},{A:1, B:2, C:3}]; //...
mars.y = [{A:1, B:4, C:2},{A:1, B:2, C:3}]; //...
// ...about 600 lines in total
mars.doSomething = function(foo){
var result = 0;
// Do lots of processing of above arrays
return result;
}
mars.doSomethingElse = function(bar){
var result = 0;
// Do lots of processing of above arrays
return result;
}
console.log(mars.doSomething(3))
To działa, ale naraża mars.x
itp do reszty kodu, który naprawdę nie musi o tym wiedzieć. Jeśli użyję metody prototype
, metody nie będą już statyczne, a kod będzie zaśmiecony wywołaniami new
, czego tak naprawdę nie chcę.
To, o co teraz pytam, to: Jak ukryć zmienne w JavaScript, a jednocześnie wyeksponować metody statyczne na resztę kodu? Czy martwię się czymś, czym nie powinienem być?
Przez resztę kodu, masz na myśli metody twojego classe? – Sprottenwels
Martwisz się o coś, czym nie powinieneś być! – adeneo
@Sprottenwels Nie, mam na myśli pozostałe 50 lub klasy wartości funkcji (w sumie setki funkcji). Czuję się tak, jakbym zaśmiecał cały świat wieloma rzeczami, o których większość innych klas nie musi wiedzieć. –