2.1 写法


fun.apply(thisArg, [argsArray])

  • thisArg:指向谁

  • argArray:传递的值,必须包含在数组里面

  • 返回值就是函数的返回值,因为它就是调用函数

2.2 应用


  • 改变this指向

let o = {

name:‘Andy’

}

function fn(arr) {

console.log(this); //o

console.log(arr); //‘apple’ , 如果传入的是数组包含着字符串,那么会将数组去掉

}

fn.apply(o,[‘apple’])

  • 用apply借助借助于数学内置函数对象求数组中的最大值或最小值等

//我们可以用apply借助于数学内置函数对象求数组中的最大值或最小值等

//Math.max()

let arr = [1,33,4,22,99,7]

let max = Math.max.apply(Math,arr)

console.log(max); // 99

3. bind方法

=============================================================================

bind()方法不会调用函数。但是能改变函数内部this指向

3.1 写法


fun.bind(thisArg, arg1, arg2, …)

  • thisArg:指向谁

  • arg1:参数1

  • arg2:参数2

  • 返回由指定的this值和初始化参数改造的原函数拷贝,简单来说,就是将改造好产生的一个新函数返回给我们。

3.2 应用


  • 改变this指向

let o = {

name:‘Andy’

}

function fn() {

console.log(this); //o

}

let newFn = fn.bind(o)

newFn() //注意,此时才调用该函数

//1. 不会调用原来的函数,可以改变原来函数内部的this指向

//2. 返回的是原函数改变this之后产生的新函数

如果有一个按钮,当我们点击了之后,就禁用这个按钮,3秒钟之后开启这个按钮

let btn = document.querySelector(‘button’)

btn.onClick = funciton() {

this.disabled = true //这里的this指向btn这个按钮

setTimeout(function(){

this.disabled = false //定时器中的this,起初指向的是window,

//但是经过bind方法指向了btn

}.bind(this),3000) //因为这个this在定时器函数外,因此它指向的是btn按钮

}

此案例用bind方法最合适,因为用其他方法会立即调用,而用bind就可以根据案例要求去随时调用,因此这个方法也是以上三个方法中用到的最多的!

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

总结

=============================================================

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

log.csdnimg.cn/img_convert/644efd4ddd0f8d43535f1982ec0da6e4.png)

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐