Сообщение от kobezzza
|
Ну это сжатие в продвинутом режиме closure compiler, для этого нужно спецом под него код писать.
|
а понял, просто не знал что он так называеться. Под него довольно сложно писать
Сообщение от kobezzza
|
Как не использую? как раз его и использую) Если передал массив, строку или массивоподобный объект (например HTMLCollection) то буит простой for, для остальных for in
|
а, твоя реализация быстрее forEach и медленее for?)
вопрос по продвинутом сжатию, к примеру есть код
(function (undef) {
var local_name = "cache_module_",
v_name = local_name + "cache_version";
function cache(params) {
this.storage = sessionStorage;
this.isUse = false;
if(params.isLocal) {
this.storage = localStorage;
}
}
cache.prototype.get = function (id) {
if(!this.isUse) return;
try{
var obj = this.storage.getItem(local_name + id)
return JSON.parse(obj);
} catch(ignore) {}
};
cache.prototype.set = function(key, data) {
if(!this.isUse) return;
setTimeout(function() {
this.storage.setItem(local_name + key, JSON.stringify(data));
}.bind(this), 0)
};
cache.prototype.removeItem = function(key) {
this.storage.removeItem(local_name + key);
};
cache.prototype.clear = function () {
var storage = this.storage, key;
for(var i = 0; i < storage.length; i++) {
key = storage.key(i);
if(~key.indexOf(local_name))
storage.removeItem(key);
}
}
cache.prototype.init = function(parent, initObj) {
var v;
if(arguments.length != 2 ||
initObj.cacheVersion === undef) return;
if(v = this.get(v_name) &&
v != initObj.cacheVersion) {
this.clear();
}
this.set(v_name, initObj.cacheVersion);
this.isUse = true;
};
Object.defineProperty(cache.prototype, "name", {
value: "cache",
writable: false
});
window.Cache_module = cache;
}());
// почему из него убираються прототипы и остаеться
(function(){function b(){}Object.defineProperty(b.prototype,"name",{value:"cache",writable:!1});window.a=b})();
это из за того что они явно не используеться в коде?