js基礎寫法

2021-09-02 04:48:48 字數 3685 閱讀 5387

@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...