网站建设空间是指什么江苏网站开发
javacript语法易忘知识:
1.实现防抖函数debounce:
防抖函数原理 :
在事件被触发n秒后在执行回调,如果在这n秒内又被触发,则重新计时。
场景:
按钮提交场景: 防止多次提交按钮,只执行最后提交的一次
服务端验证场景 : 表单验证需要服务端配合,只执行一段连续的输入事件的最后一次,还有搜索联想词功能和一些表单元素的校验,如手机号,邮箱,用户名等类似
//防抖函数
const debounce = (fn,delay)=>{let timer = null;return (...args)=>{clearTimeout(timer);timer = setTimeout(()=>{fn.apply(this,args)},delay);};
};
2.实现节流函数 (throttle):
防抖函数原理:
规定在一单位时间内。只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
适用场景:
拖拽场景: 固定时间内只执行一次,防止超高频次触发位置变动
缩放场景: 监控浏览器resize
动画场景: 避免短时间内多次触发动画引起性能问题
//节流函数
const throttle = (fn,delay = 500) =>{let flag = true;return (...args) =>{if (!flag) return;flag = false;setTimeout(() => {fn.apply(this,args)},delay);};
};
实现一个call:
将函数设为对象的属性
执行&删除这个函数
指定this到函数并传人给定参数执行函数
如果不传人参数,默认指向为 window
//实现一个call方法;
Function.prototype.myCall = function(context){//此处没有考虑context非object情况context.fn = this;let args = [];for (let i = 1,len = arguments.length,i < len; i++){args.push(arguments[i]);}context.fn(...args);let result = context.fn(...args);delete context.fn;return result;
};
3.模拟Object.create
原理:Object.create() 方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
// 模拟 object.create
function create(proto){function F(){F.prototype = proto;return new F();}
}
4.转化为驼峰命名
var f = function(s){return s.replace(/-\w/g,function(x){return x.slice(1).toUpperCase(); })
}