Монолит - это объект, используемый для разделения пространства имен и организации некоторых связанных атрибутов и методов. Если она может быть создана экземпляром, она может быть создана только один раз (она может жениться только один раз, а не второй брак).
Монолитный паттерн является одним из самых основных, но полезных шаблонов в JavaScript.
Функции:
1. Может использоваться для разделения пространств имен, чтобы очистить опасность или эффекты глобальных переменных.
2. Используйте технологию ветвления, чтобы инкапсулировать различия между браузерами.
3. Код может быть организован более с одним способом, облегчая чтение и поддержание.
Основное написание режима с одним телом:
/* Самый базовый мономерный шаблон*/ var her = {name: 'anna', sex: 'women', say: function () {// Некоторая логика обработки ...}, down: function () {// Другие функции обработки ...}}1. Разделите пространство имен:
var box = {ширина: 0, высота: 0, getarea: function () {return this.width * this.width; // должен отображаться доступ к объектам в j Этот метод эквивалентен определению двух глобальных переменных, (переменные, не объявленные VAR, являются глобальными переменными) // Это не является присвоением ширины и высоте объекта // Ниже приведено правильное this.width = w; this.height = h;}} // box делит пространство имен, а переменные в пространстве имен действительны только в пространствеВсе участники и методы в вышеуказанном мономере являются общедоступными, то есть их можно произвольно изменить за пределами мономера (но они не могут получить доступ к локальным переменным). Так почему же мономер предоставляет пространство имен?
Не волнуйтесь, давайте продолжим смотреть:
var box = {ширина: 0, высота: 0, // переменная мономера getarea: function () {return width * height; // ширина, высота не является переменной мономера, а глобальная переменная, определенная в init} init: function (w, h) {width = w; hight = h;}} // in init, hister не является мономером. box.getarea (); alert (init);}Поскольку ширина и высота в init не инициализированы, сообщается об ошибке, поэтому измените ее так:
var box = {width: 0, height: 0, getarea: function () {return width * height;}, init: function (w, h) {width = w; height = h;}} window.onload = functНайдено, что все в порядке. Поскольку ширина и высота, используемая init и getarea, не являются переменными, принадлежащими монолиту, но являются глобальной переменной, мы можем делать случайные вызовы вне монолита без затрования.
var box = {ширина: 0, высота: 0, getarea: function () {return width * height; // Доступ к объекту в Js должен отображаться, то есть это не может быть пропущено}, init: function (w, h) {width = w; hight = h;}} // with with with = wish = width = 0; box.getarea (); alert (width);}Таким образом, сообщается, что будет сообщена ошибка. Видно, что наш метод выше, не создает пространство имен для глобальных переменных, а глобальные переменные представляют нам опасность. Итак, верхнее слово верно, давайте подтвердим:
var box = {ширина: 2, высота: 2, getarea: function () {return this.width * this.height; / / JS Доступ должен быть отображен, то есть это не может быть пропущено}, init: function (w, h) {this.width = w; this.height = h;}} window.onload = function () {width = 0; // это не повлияет на локальные переменные в монолите, то есть высота пространства имен = 0; // это не повлияет на локальные переменные в монолите, то есть пространство имен var width = box.getarea (); alert (width);}Можно видеть, что ширина и высота в окне. Не вмешатся, потому что мономеры установили пространство имен для ширины и высоты в мономерах.
2. Свойства члена:
Хотя в JavaScript нет такого строгого объектно-ориентированного (ООП), мы можем использовать закрытие для имитации. В конце концов, нехорошо устанавливать некоторые переменные для общественности.
var her = (function () {var name = 'anna'; var sex = 'women'; return {getarea: function () {return name + 'is' + sex;}, init: function (b) {name = b;}}}) (); window.onload = function () {her.name = 'jock'; // не может получить доступ к оповещению (ger.getarea ()); her.init ('lous'); alert (hes.getarea ());}Частные переменные и методы являются только для чтения, в то время как публичные переменные и методы подлежат чтению.
доступ:
Для частных членов вы можете получить доступ к ним напрямую без каких -либо изменений перед ними.
Для общественного доступа, «это». Должен быть добавлен перед мономером, и «ее». (имя монободи.)
3. Используйте технологию филиалов, чтобы инкапсулировать различия между браузерами
Примечания:
а Обязательно используйте закрытие для достижения мгновенного привязки
беременный Разделите каждую ветвь с помощью полуколона
в Последнее, что возвращается, - это имя филиала
дюймовый Используйте одно имя + имени метода ветви при вызове;
// Использование технологии ветвления мономера для определения объектов xhr (xmlhttprequest), и вы должны использовать закрытие для реализации var xhr = (function () {// Три филиала стандарта = {cxhr: function () {return new xmlhtprequest ();}}; ActiveXObject ('msxml2.xmlhttp');}}; var activexold = {cxhr: function () {return new activexobject ('microsoft.xmlhttp');}}; // Чтобы назначить (назначить) ветвь, возвращайте все, что не удастся. Если ошибка не была выброшена} catch (e) {try {testObject = activeXnew.cxhr (); return activexnew;} catch (e) {try {testobject = activeSold.cxhr (); return activeXnew;} catch (e) {try {testobject = active -active. Xmlhttprequestobject не удалось! ');Выше приведено всесторонний анализ модели одного тела модели проектирования JavaScript, введенной редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!