web开发者,ajax嵌套

这篇博客主要探讨前端开发中的函数调用方式,包括call、apply、bind的使用及区别,以及节流和防抖的概念与应用场景。此外,还涉及数组操作、对象拷贝等基础知识,适合前端面试复习。
摘要由CSDN通过智能技术生成

函数

call

  • 语法:fn.call(obj,…args)
  • 功能:执行fn,使this为obj,并将后面的n个参数传给fn
Function.prototype.myCall = function (obj, ...args) {
  if (obj == undefined || obj == null) {
    obj = globalThis
  }
  obj.fn = this
  let res = obj.fn(...args)
  delete obj.fn
  return res
}
value = 2

let foo = {
  value: 1,
}

let bar = function (name) {
  console.log(name, this.value)
}

bar.myCall(foo, 'HearLing', 18) //HearLing 18 1
bar.myCall(null, 'HearLing', 18) //HearLing 18 2
复制代码

apply

  • 语法:fn.apply(obj,arr)
  • 功能:执行fn,使this为obj,并arr数组中元素传给fn
Function.prototype.myAplly = function (obj, arr) {
  if (obj == undefined || obj == null) {
    obj = globalThis
  }
  obj.fn = this
  let res = obj.fn(...arr)
  delete obj.fn
  return res
}
value = 2

let foo = {
  value: 1,
}

let bar = function (name, age) {
  console.log(name, age, this.value)
}

bar.myAplly(foo, ['HearLing', 18]) //HearLing 18 1
bar.myAplly(null, ['HearLing', 18]) //HearLing 18 2
复制代码

bind

  • 语法:fn.bind(obj,…args)
  • 功能:返回一个新函数,给fn绑定this为obj,并制定参数为后面的n个参数
Function.prototype.myBind = function (obj, ...args) {
  let that = this
  let f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值