/*
浏览器兼容性类方法
*/
1.获取事件源
function getEventSource(evt){
return evt.target || evt.srcElement;
}
2.获取事件对象
function getEvent(evt){
return evt ? evt : window.event;
}
3.阻止默认事件
function preventDefultEvent(evt){
var event = evt || window.event;
if(event.preventDefult){
event.preventDefult();/*W3C标准*/
}else{
event.returnValue = false;/*兼容IE*/
}
}
4.获取兄弟元素节点
function nextSiblingElement(ele){
if(ele.nextElementSibling){
return ele.nextElementSibling;
}else{
return ele.nextSibling;
}
}
function previousSiblingElement(ele){
if(ele.previousElementSibling){
return ele.previousElementSibling;
}else{
return ele.previousSibling;
}
}
5.获取第一和最后一个元素节点
function firstElement(ele){
if(ele.firstElementChild){
return ele.firstElementChild;
}else{
return ele.firstChild;
}
}
function lastElement(ele){
if(ele.lastElementChild){
return ele.lastElementChild;
}else{
return ele.lastChild;
}
}
6.添加或移除监听事件
function addEvent(ele,type,callback){
if(ele.addEventListner){
ele.addEventListner(type,callback,false);
}else{
ele.attachEvent('on'+type,callback);
}
}
function removeEvent(ele,type,callback){
if(ele.removeEventListener){
ele.removeEventListener(type,callback,false);
}else{
ele.detachEvent('on'+type,callback);
}
}
7.阻止事件冒泡
function stopBubble(evt){
var event = evt || window.event;
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancleBubble = true;
}
}
8.js按需加载 异步加载
function loadScript(url,callback){
var script = document.createElement('script');
script.type = 'text/javascript';
if(script.readyState){
script.onreadystatechange = function(){
if(script.readyState == 'complete' || script.readState == 'loaded'){
callback();
}
}
}else{
script.onload = function(){
callback();
}
}
script.src = url;
document.head.appendChild(script);
}
/*
继承类方法
*/
1.原型链继承
B.prototype = new A();
function protoChainInherit(Origin,Target,arg){
Target.prototype = new Origin(arg);
}
2.借用构造函数继承call/apply(改变this指向,参数列表不同)
function A(arg){
}
function B(){
A.call(this,arg);
}
3.共享原型
B.prototype = A.prototype;
4.圣杯模式继承
function inherit(Origin, Target) {
var Temp = function () {};// 临时构造函数
Temp.prototype = Origin.prototype;
Target.prototype = new Temp();
Target.prototype.constructor = Target; // 目标构造函数原型属性constructor指向 目标构造函数
Target.prototype.ancestor = Origin; // target 的生父
}
/*
其他方法
*/
1.数组去重
function unique(arr){
let newArr = [];
let obj = {};
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i].label]) {
obj[arr[i].label] = 1;
newArr.push(arr[i]);
}
}
return newArr;
}