js,基础易忘知识,持续更新中,,,

33 篇文章 0 订阅
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(); 
    })
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值