Я искал вокруг переполнения стека и веб-страницы в целом, для достойного объяснения чего-то, что я вижу в некотором унаследованном JavaScript. Пока мне не повезло, поэтому я решил принять крайнюю меру, чтобы опубликовать вопрос. :-)Методы создания объектов JavaScript
Код не очень старый, но он предваряет мое участие в проекте и (конечно же) разработчика, который изначально создал его, прежде чем я сюда попал.
Так вот мы идем:
Обычно, когда я смотрю @ код, который создает 'классы' JavaScript я вижу что-то вроде:
var SomeClass = function() { ..stuff.. }
...other code...
var objSomeClass = new SomeClass();
Также знакомый является JavaScript буквальным:
var someLiteral = { ..stuff.. }
...other code...
var someResult = someLiteral.someFunction();
То, что я вижу в устаревшем коде, похоже, является комбинацией двух стилей, и я никогда не видел, чтобы кто-то делал это раньше. Так что у нас есть это:
var someLiteral = { ..stuff.. }
...other code...
var objSomeLiteral = new someLiteral();
Кроме того, в том же коде декларации, как это:
function doStuff() { ..stuff.. }
...other code...
var objDoStuff = new doStuff();
Опять же, я никогда не видел, чтобы кто писать код, совсем как это раньше.
Является ли этот семантически неправильный код, или есть какая-то веская причина для этого так, что я просто не знаю? Это всегда возможно, на данный момент я не претендую на экспертизу JavaScript.
Код определенно работает, но если это не «хороший» код, тогда я хочу его переписать. Потому что я просто анал. :-)
Спасибо!
Ваш первый и последний случай одинаковы. Единственное отличие состоит в том, что в первом случае у вас есть анонимная функция, а в последней - именованная функция. Также было бы неплохо, если бы вы могли предоставить ссылку, где вы видели третий случай, так как это действительно недействительный JavaScript. –
Я бы хотел опубликовать оригинальный код, но я чувствую, что мне придется сначала его сначала дезинфицировать. Да, я знаю - это JavaScript и технически любой, кто действительно хотел бы посмотреть на него. Но я бы предпочел не публиковать его, поскольку он связан с нашим процессом аутентификации пользователей. –
Итак, Case 1 & Case 4 функционально эквивалентны. Я этого не знал. Хотя сейчас кажется очевидным, что я действительно об этом думаю. :-) –