Методы создания объектов JavaScript - PullRequest
2 голосов
/ 19 января 2012

Я искал в Stack Overflow и в Интернете в целом достойное объяснение того, что я вижу в каком-то устаревшем JavaScript.Пока что мне не очень повезло, поэтому я решил предпринять крайнюю меру, фактически отправив вопрос.: -)

Код не очень старый, но он предшествует моему участию в проекте, и (конечно) разработчик, который первоначально создал его, ушел до того, как я попал сюда.

Итак, мы идем:

Обычно, когда я смотрю @ code, который создает «классы» 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.

Код определенно работает, но если это не «хороший» код, я захочу переписать его.Потому что я такой анальный.: -)

Спасибо!

1 Ответ

2 голосов
/ 19 января 2012

new <Object> - синтаксическая ошибка. Это просто неверный JavaScript. Операнд new должен быть функцией.

Кроме того, использование функций в качестве конструкторов, как вы показали в своем примере конструкции "class", является очень распространенной практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...