JS
节艹鸣泣之时
立志用最通俗的话说明问题
展开
-
函数防抖与节流
起因因为在写前端页面时需要监控鼠标滚轮,这导致在很短时间内,会触发很多次函数,造成页面卡顿堵塞,正巧自己在看GitHub时看到了这个,所以自己记录一下。防抖动函数防抖就是让某个函数在上一次执行后,满足等待某个时间内不再触发此函数后再执行,而在这个等待时间内再次触发此函数,等待时间会重新计算。underscore源码_.debounce = function(func, wai...转载 2018-07-26 14:27:00 · 143 阅读 · 0 评论 -
js设计模式命名理解
1.构造器模式实例化的时候用new创建的对象。2.模块模式定义一个中括号对象,在内部定义值和方法,可用 立即执行函数 设置 共有和私有。3.揭示模式模块模式的改良,它拥有指向私有函数的指针。4.单例模式在调用内部方法的时候先进行是否存在判断,若存在,仅返回引用,用起来大概就是同一个实例的同一方法相等。(PS:单例模式应该是立即执行函数才可能会有的)5.观察者模式...原创 2019-02-25 17:18:01 · 132 阅读 · 0 评论 -
获取fs的readfille读取文件时的返回值
针对fs的readfille读取文件时,返回不了异步函数返回值的解决方法。首先,例:一:let file = fs.readFile(path, "utf-8", function(err, dataStr){ return dataStr;});二:’let file = '';fs.readFile(path, "utf-8", func...原创 2018-11-26 23:27:01 · 4142 阅读 · 2 评论 -
thunk及函数柯里化
---柯里化所谓柯里化就是:将函数与其参数的一个子集绑定起来后返回个新函数。 正常情况下: function simpleURL(protocol, domain, path) { return protocol + "://" + domain + "/" + path; }simpleURL('http','www.jackzxl.net', 'index.html'); ...原创 2018-09-10 10:48:00 · 944 阅读 · 0 评论 -
JavaScript设计模式学习记录(四)
1.外观模式个人感觉就是封装监听方法,使之兼容各个浏览器,所以外观模式其实就是封装方法?不知道我理解的对不对//外观模式实现function addEvent(dom, type, fn){ if(dom.addEventListener){ dom.addEventListener(type, fn, false); }else if(dom.atta...原创 2018-12-28 15:14:30 · 83 阅读 · 0 评论 -
JavaScript设计模式学习记录(三)
1.工厂模式特点:创建出来的对象都是一个新的个体function createObj(name, time, type){ var o = new Object(); o.name = name; o.time = time; o.type = type; o.getName = function(){ console.log(th...原创 2018-11-26 23:27:54 · 85 阅读 · 0 评论 -
JavaScript设计模式学习记录(二)
1.使用new实例化原因:忘记加new的时候,式子右边函数会立即执行,然后变量获取的是函数的值,因为没有return,所以book是undefinedvar Book = function(title, time, type){ this.title = title; this.time = time; this.type = type;}//缺少new的实例...原创 2018-08-20 10:06:45 · 100 阅读 · 0 评论 -
经典JS闭包题
在逛博客时,看见一个很有意思的闭包题,发现自己对闭包没有完全理解,故记录下来。先看题目代码:function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } };}var a = fun(0); a.fun(1); a.fun(2); a.fun...转载 2019-01-02 11:26:12 · 460 阅读 · 0 评论 -
JavaScript设计模式学习记录(一)
1.直接定义在全局的函数是全局变量,可能被后面代码覆盖失效。例:function checkName(){ //验证名字}//等价于var checkName = function(){ //验证名字}解决方法:创建对象,将方法作为属性名放入对象里2.类与对象创建函数的不同//返回对象方式var check = function(){ retu...原创 2018-08-17 11:13:57 · 107 阅读 · 0 评论 -
substr、substring、slice、splice的用法区别
var str1 = "abcdef"var arr1 = ["a","b","c","d","e","f"]console.log( str1.substr(0,3) ); //"abc",从下标0开始,截取3个字符console.log( str1.substring(0,3) ); //"abc&quo原创 2018-07-30 13:40:58 · 104 阅读 · 0 评论 -
计算工作日函数——接收new Date()为参数版
接收new Date()参数的计算工作日函数,是在之前的计算yyyy-mm-dd版的改版function computeDaysDelta(date1, date2) { let delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1; let weekEnds = 0; if (delta < 0) { ...原创 2018-07-30 13:40:32 · 1067 阅读 · 0 评论 -
js的函数声明
var F = function(){ getN = function(){ console.log("1") } return this; } F.getN = function(){ console.log("2"); ...原创 2019-02-20 18:36:12 · 392 阅读 · 0 评论