|
Паттерны и приемы!
Общеизвестный прием запаковывания данных в скоп:
(function(){ var cache = {}; this.nya = function nya (str){ cache = {} }; })(); создастся функция НЯ и в ней доступен cache , из вне он не доступен. Какие приемы запаковывания, заворачивания вы еще знаете?) Какие еще прикольные приемы знаете, например как ускорить код и.т.п. Давайте обменяемся опытом) |
прочитай книгу Javascript Patterns от Стояна Стефанова.
пара примеров кода "запаковки" window.nya = new function(){ var cache = {}; this.getCache = function(){ return cache; }; }; вот этот меня поразил, когда я его увидел в первый раз : ({ css : function(el, prop){ /*return css-prop*/ }, ajax : function(options){ /*make ajax-request*/ }, init : function(name){ var cache = {}; this.getCache = function(){ return cache }; delete this.init; window[name] = this; } }).init("myToolbox"); myToolbox.ajax({ url : "foo", async : true }); //ajax-req. myToolBox.css(document.body, "width"); // some width myToolbox.getCache(); // {} typeof myToolbox.cache // undefined. typeof myToolbox.init // undefined. |
window.nya = new function(){ var cache = {}; this.getCache = function(){ return cache; }; }; вот тут не понял, чем отличается cache от getCache ? какая разница чем GO засирать? можешь наглядный пример кинуть с этим? |
window.nya = new function(){ var cache = {}; this.getCache = function(){ return cache; }; }; alert([ typeof nya.getCache(), typeof nya.cache, typeof cache ]); // obj, undef, undef. |
Цитата:
крута значит я все правильно делаю)) |
Цитата:
|
Цитата:
единственная загвоздка - в методе init :) |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Зачем создавать метод, который будет вызван всего один раз (а потом ещё и самоликвидируется)? Лучше сразу сделать анонимную функцию, которая будет собирать и возвращать объект. |
Часовой пояс GMT +3, время: 17:52. |
|