@title: layui
@description:經典模組化前端框架
@site: www.layui.com
@author: 賢心
@license:lgpl
//開頭的分號,意在防止與其他js檔案合併壓縮時,由於上乙個檔案沒有用分號結尾而產生問題
//常見的(多了一對括號),呼叫匿名函式:(function() {})()
//另外一種!function(){}()前面加上乙個布林運算子(只多了乙個感嘆號),就是表示式了,將執行後面的**,也就合法實現呼叫
;!function(win);
lay.fn = lay.prototype;
var doc = document, config = lay.fn.cache = {},
//獲取layui所在目錄
getpath = function()(),
//異常提示
error = function(msg),
isopera = typeof opera !== 『undefined』 && opera.tostring() === 『[object opera]』,
//內建模組
modules = ;
config.modules = {}; //記錄模組物理路徑
config.status = {}; //記錄模組載入狀態
config.timeout = 10; //符合規範的模組請求最長等待秒數
config.event = {}; //記錄模組自定義事件
//靜態資源host
config.host = config.host || (dir.match(///([\s\s]+?)//)||[』//』+ location.host +』/』])[0];
//載入完畢
function onscriptload(e, url);
config.status[item] ? oncallback() : settimeout(poll, 4);
}());}}
//載入模組
var node = doc.createelement(『script』), url = (
modules[item] ? (dir + 『lay/』) : (config.base || 『』)
) + (that.modules[item] || item) + 『.js』;
node.async = true;
node.charset = 『utf-8』;
node.src = url + function()();
config.modules[item] = url;
return that;
//使用打包好的完整layui庫
lay.fn.all = function(callback);
//獲取節點的style屬性值
lay.fn.getstyle = function(node, name);
link.rel = 『stylesheet』;
link.href = href + (config.debug ? 『?v=』+new date().gettime() : 『』);
link.media = 『all』;
if(typeof fn !== 『function』) return ;
//輪詢css是否載入完畢
(function poll() ;
parseint(that.getstyle(doc.getelementbyid(id), 『width』)) === 1989 ? function()() : settimeout(poll, 100);
}());
};//css內部載入器
lay.fn.addcss = function(firename, fn, cssname);
//預載入
lay.fn.img = function(url, callback, error)
img.onload = function();
img.onerror = function(e);
};//全域性配置
lay.fn.config = function(options);
for(var key in options)
return this;
};//記錄全部模組
lay.fn.modules = function();
for(var o in modules)
return clone;
}();
//拓展模組
lay.fn.extend = function(options);
for(var o in options) else
}return that;
};//路由
lay.fn.router = function(hash);
for(var i = 0; i < hashs.length; i++)
}() : param.dir.push(hashs[i]);
item = null;
}return param;
};//本地儲存
lay.fn.data = function(table, settings);
if(!win.json || !win.json.parse) return;
try catch(e);
}if(settings.value) data[settings.key] = settings.value;
if(settings.remove) delete data[settings.key];
localstorage[table] = json.stringify(data);
return settings.key ? data[settings.key] : data;
};//裝置資訊
lay.fn.device = function(key);
//任意的key
if(key && !result[key])
//移動裝置
result.android = /android/.test(agent);
result.ios = result.os === 『ios』;
return result;
};//提示
lay.fn.hint = function()
};//遍歷
lay.fn.each = function(obj, fn)
} else
}return that;
};//阻止事件冒泡
lay.fn.stope = function(e);
//自定義模組事件
lay.fn.onevent = function(modname, events, callback);
//執行自定義模組事件
lay.fn.event = function(modname, events, params);
layui.each(config.event[set], callback);
filter[0] && layui.each(config.event[events], callback); //執行過濾器中的事件
return result;
};win.layui = new lay();
}(window);
js相容寫法
新增事件方法 addhandler function element,type,handler elseif element.attachevent else 移除之前新增的事件方法 removehandler function element,type,handler elseif element...
js常用寫法
遍歷陣列 es5 寫法 arr.foreach function value,index 遍歷陣列es6 寫法 for let i of arr 判斷字串str是否以1開頭 str.indexof 1 0 從集合中過濾符合條件的元素 var require lodash var users var ...
Js類的寫法
建構函式的優點是 我們可以根據引數來構造不同的物件例項 缺點是每次構造例項物件時都會生成getname方法,造成了記憶體的浪費。用乙個外部函式來代替類方法,達到了每個物件共享同乙個方法 原型方式的缺點就是不能通過引數來構造物件例項 一般每個物件的屬性是不相同的 優點是所有物件例項都共享getname...