Web程序员必备的7个Javascript函数

Web程序员必备的7个Javascript函数
几年前,我们只要写Javascript,必须使用一些常用的功能,如注册侦听器和attachevent,而不是技术和功能是非常先进的,但一些基本的任务原因是各种浏览器之间的差异。这么长时间和技术的不断改进后,仍有一些Javascript函数,几乎所有的Web程序员来说是必不可少的,或性能或功能。

消抖功能防止高频电话

当那个函数是一个函数,有必要提高任务执行事件驱动的性能。如果你使用滚动,调整大小,关键*等事件触发执行的任务,你不使用拖放功能,你犯了重大错误,较低频率的功能,消抖,可以使你的代码更高效:

返回一个函数,只要它继续被调用,就不会
被触发。函数在停止调用后将被调用。
n毫秒。如果立即 通过,则触发
而不是前沿,尾随。
功能消抖(函数,等等,立即){
VaR超时;
返回函数(){
VaR上下文=,=参数args;
var后面的函数(){()
超时=空;
如果(!func.apply(立即)背景下,args);
};
var callNow =直接!超时;
ClearTimeout(超时);
超时= setTimeout(后来,等);
如果(callNow)func.apply(上下文,args);
};
};

使用
无功myefficientfn =消抖(函数()){
你做的那些繁重的工作
},250);
Window.addEventListener('resize ',myefficientfn);

当那个函数只允许你提供一个回调函数在给定的时间间隔来减少其频率执行。这样的限制尤为重要,当高频触发时。

设置时间/频率循环检测功能

上面提到的消抖功能是由一个事件触发的援助。但有时没有这样的事件是可用的,所以我们只能写一个函数来检查它的每一次。
函数轮询(FN、回调、错误、超时、间隔){
VaR StartTime =(新的日期()GetTime());
VaR(PI = window.setinterval功能()){
如果(Math.floor((的时间)(新)-(开始时间) / 1000)<=超时){
如果(FN()){
回调();
}
{人}
window.clearinterval(PI);
(错误);
}
},区间)
}
一次功能,禁止重复调用,只允许执行一次。

很多时候,我们只需要某种形式的动作必须执行一次,如果我们限制使用onload执行只有当加载完成。以下功能允许你的操作被执行一次,它将不会重演。
函数一次(FN,上下文){
VaR结果;

返回函数(){
如果(FN){
结果:fn.apply(上下文| |这个参数);
FN =空值;
}

返回结果;
};
}

使用
无功canonlyfireonce =一次(函数()){
console.log('fired!);
});

(canonlyfireonce); / /发射!
(canonlyfireonce); / / Nada

这一次函数确保您提供的函数只执行一次,并防止重复执行。

得到一个链接getabsoluteurl绝对地址

获得一个链接的绝对地址并不像你想象的那么简单,下面是一个非常实用的函数,它可以根据你输入的相对地址获得绝对地址。
无功getabsoluteurl =(函数(){()
Var a;

返回函数(URL){
如果(!一document.createelement)=(A);
a.href =网址;

返回a.href;
};
});

使用
GetAbsoluteUrl( /东西);
一个标签链接在这里用来生成完整的绝对URL,这是非常可靠的。

判断一个Javascript函数是系统固有功能原产

许多第三方js脚本将新函数引入全局变量,有些甚至覆盖了系统的本机函数。下面的方法用于检查本机函数是否:
(函数(){())

用于解析内部的值
VaR方法= object.prototype.tostring;

用于解决反编译的源/功能
无功fntostring = function.prototype.tostring;

要检测主机使用的构造函数(Safari真的键入数组> 4;具体)
无功rehostctor = / ^ {对象。+构造函数 } $ /;

编译一个正则表达式使用公共/本地方法作为模板。
我们选择了`对象# toString `因为有 / OD的机会不被搞砸了。
var = regexp(renative + ^
`对象# toString `一连串 / /强迫
字符串(字符串)
任何特殊字符 / /逃避规则
更换( / {。* + ^美元(| { } { } / } / g), $')
对` toString ` / /替换提到保持模板的通用。*
像'替换'来支持像犀牛这样的环境…添加额外信息
作为方法的差异。 /此类
更换( / toString |(功能)*(为)= (| 1(= })/ g,1美元。*)+$
);

功能是本地的(值){
变量类型=类型的值;
返回类型= = 'function
使用`功能# toString `绕过价值 /自己` ` toString方法
避免伪造。
renative.test(fntostring.call(值))
回退到主机对象,因为某些环境将表示
像类型数组一样作为DOM /方法的东西可能不符合
本地模式。正常
(价值:类型= 'object' rehostctor.test(tostring.call(值))假| |);
}

但是,您希望导出
module.exports =原产;
}();

使用
是本地的(警告); / /真的
原产(mycustomfunction); / /假

这个方法不是那么简单,但它仍然可以完成任务!

创建一个新的Javascript的CSS规则insertrule

有时我们使用CSS选择器(如文档。querySelectorAll)得到一个列表,然后改变风格,他们每个人都在变。事实上,这不是一个有效的方法。有效的方法是用Javascript构建一个新的CSS样式规则:
一个更好的表对象
表=(函数){
构建 /样式
VaR的风格= document.createelement('style);
style.setattribute(媒体,'screen);
style.appendchild(document.createtextnode('));
Document.head.appendChild (style);

并返回一个单独的函数
Return function (rule) {style.sheet.insertRule (rule, style.sheet.cssRules.length);};
});

作为函数调用
表(。统计{位置:相对;顶部:0px } );

这些做法的效率非常高。在某些场景中,如使用Ajax加载新的HTML,使用上述方法,您不需要操作新加载的HTML内容。

判断一个网页元素都有某种属性和风格matchesselector
功能matchesselector(EL,选择器){
var p = element.prototype;
var = p.matches p.webkitmatchesselector p.mozmatchesselector p.msmatchesselector | | | | | | | |(功能){
返回{ }。indexof.call(document.queryselectorall(S),= = 1);
};
返回f.call(EL,选择器);
}

使用
MatchesSelector(document.getelementbyid('mydiv),'div.someselector {一些属性=真})

这是7个Javascript函数,每个Web程序员都应该知道如何使用它们。

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部