Я всегда использовал объектные литералы, потому что они представляют собой простой способ организации кода. Вот почему мне не нравится прототип, он слишком грязный.
Функции не ограничивают пространство имен, как кто-либо, упомянутый выше, больше, чем объектные литералы.
Вы можете легко написать литерал типа
var obj = {}
var find = function(elem) { /* find code */ },
var doSomething = function() { /* doSomething code */ },
var doSomethingElse = function() { /* doSomethingElse code */ }
, что приведет к созданию множества глобальных объектов, таких же, как функции. Точно так же вы можете сделать:
(function() {
function find(elem) { /* find code */ },
function doSomething() { /* doSomething code */ },
function doSomethingElse() { /* doSomethingElse code */ }
})();
, который не будет создавать эти глобальные объекты (все объекты в JS)
таким образом, вы по-прежнему не создаете множество глобальных объектов.
На мой взгляд, у литералов объекта есть два преимущества. Один из них используется многими плагинами, такими как jQuery, чтобы люди были знакомы и их было легко читать. Делая их легко передавать через данные в плагин. Легко создавать как публичные, так и приватные методы ....
Они могут быть медленными, хотя каждый раз, когда вы создаете экземпляр объекта, все его методы дублируются. Насколько я понимаю, это не относится к прототипу, так как у вас есть одна копия методов, а новые ojects просто ссылаются на прототип.
Конечно, я могу ошибаться ...