Использование общей библиотеки - это одно, но я думаю, что много «получить» JavaScript просто тратит время на его написание. Вещи, которые могут показаться эзотерическими, постепенно станут мирскими. Это относится практически к любому языку или структуре.
Многие из идиом, используемых в JavaScript, такие как анонимные функции, буквальный синтаксис и т. Д., Кажутся странными только тогда, когда вы впервые сталкиваетесь с ними. Я думаю, что те же правила написания понятны C # / Java / C ++ / VB / и т.д. код применяется к JavaScript - используйте имена переменных, которые имеют семантическое значение, пишите комментарии, которые помогают кому-то понять намерения и признать предположения, быть явными и т. д.
Теперь, если вы действительно спрашиваете "как я могу сделать JavaScript понятным для того, кто не знаком с ним?" у вас есть еще одна проблема - JavaScript - это JavaScript, и разработчики просто должны усердно изучить его, прежде чем они смогут овладеть им и стать «едиными» с ним.
Например, эта функция может показаться очень странной для тех, кто не знаком с JavaScript, но для меня (и я уверен, многие другие) это не так сложно понять:
// comments are not included *on purpose* for illustrating
// my point about the need for language knowledge
function copy(obj) {
return new (function(o) {
for(var property in o) {
if(o[property].constructor == Array) {
this[property] = [];
for(var i = 0; i < o[property].length; i++) {
this[property][i] = new arguments.callee(o[property][i]);
}
} else if(o[property].constructor == Object) {
this[property] = new arguments.callee(o[property]);
} else {
this[property] = o[property];
}
}
})(obj);
}
Тот факт, что у этой функции есть имя, помогает случайному читателю понять, что она делает, но чтобы действительно понять, что она делает, нужно понимать, почему эта функция может быть необходима, как можно ссылаться на свойства объекта JavaScript. какие типы данных поддерживает JavaScript, как работают функции конструктора, как работают анонимные функции и т. д. Поможет только приличное знание этих вещей (или библиотека, в которой буквально все, кроме кухонной раковины).
ОБНОВЛЕНИЕ: Тем, кто говорит, что комментарии в приведенном выше примере, поможет разработчик, пытающийся понять это - очевидно. Комментарии полезны, и я думаю, что это само собой разумеющееся. Приведенный выше пример кода предназначен для иллюстрации нескольких специфических для JavaScript особенностей, которые могут быть поняты только тем, кто достаточно глубоко знает язык.
Как я уже сказал в комментариях к чьему-либо ответу, мой код, который я могу полностью понять на основе моих знаний JavaScript, не должен быть , поэтому прокомментировал, что он становится заменой для знания языка . Мне не нужно объяснять, например, где находится анонимная функция или что я использую ее в приведенном выше коде в качестве функции анонимного конструктора и что она изменит воспринимаемое стандартное поведение (для разработчиков на C # и Java) this
ключевое слово, все, что может сбить с толку мелких разработчиков JavaScript.