Как я могу эмулировать классы (и пространства имен) в JavaScript?
Мне нужно создать библиотеку JavaScript и иметь ограниченный опыт работы с языком. Я всегда думал, что у него есть родная поддержка классов, но он менее связан с Java, чем я предполагал. Кажется, что все в JavaScript на самом деле является функцией.
То, что я обнаружил до сих пор, имеет большой смысл, поскольку он является динамически слабо типизированным языком, но это делает его немного отходом для людей, которые привыкли иметь строго типизированный язык и использовать компилятор для определения наши ошибки:)
Я в основном работаю на С# и Java и надеялся на что-то синтаксически похожее, чтобы библиотека выглядела знакомой для наших других разработчиков С#, которые должны будут ее поддерживать.
У меня есть следующий вид кода, который работает, но мне было интересно, что будет делать другой разработчик. Каковы альтернативы? Есть ли способ, который лучше? Есть ли способ, который более читабельен?
Я понимаю, что то, что я хочу, похоже на С# или Java, когда я должен просто согласиться с тем, что этот - это JavaScript, но моя цель - попытаться ослабить кривую обучения для других разработчиков что делает его более знакомым и интуитивным для них.
//Perform the namespace setup (this will actually be done with checking
//in real life so we don't overwrite definitions, but this is kept short
//for the code sample).
var DoctaJonez = new function();
DoctaJonez.Namespace1 = new function();
/**
* Class description.
*/
DoctaJonez.Namespace1.SomeClass = function()
{
/**
* Public functions listed at the top to act like a "header".
*/
this.publicFunction = privateFunction;
/**
* Private variables next.
*/
var privateVariable;
/**
* Finally private functions.
*/
function privateFunction()
{
}
}
//Create an instance of the class
var myClass = new DoctaJonez.SomeClass();
//Do some stuff with the instance
myClass.publicFunction();