|
Одиночки. В чем разница?
Одиночки.
Есть ли разница и если есть, то в чем она заключается? Раз: var NewObject = {}; (function() { var privateStr = 'Я приватная'; NewObject = { methodX: function() { alert(privateStr); } } }) NewObject.methodX(); Два: var NewObject = new function() { var privateStr = 'Я приватная'; this.methodX = function() { alert(privateStr); } } NewObject.methodX(); |
второй код короче.
но оба бестолковы.. не стоит использовать замыкания для сокрытия состояния объекта. от этого больше неудобств, чем пользы. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Просто захотелось. Кстати, а где тогда можно уточнить про влияние таких вот изворотов на скорость скрипта? |
Snipe, экспериментируйте:)
Но мысль на самом деле правильная. В большом проекте лучше скрывать ненужное. Инкапсуляция в ООП для этого и придумана. |
Snipe, посмотрите разницу для обоих случаев в:
alert(NewObject.constructor); // => NewObject.[[prototype]].constructor Поэтому, если говорить об инициализирующем скопе, то первый вариант подойдет больше, т.к. во втором случае получается инстанс анонимной функции. |
Замыкания внутри конструкторов создают скорее не приватные свойства объектов, а приватные статические переменные "классов".И в этой ипостаси, они очень удобны. А городить всё это ради одного свойства, скорее всего, не стоит
|
Часовой пояс GMT +3, время: 22:34. |
|