JavaScript中改变this指向的方法【总结】- ,讲的太透彻了
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】个人将这段时间所学的知识,分为三个阶段:第一阶段:HTML&CSS&JavaScript基础第二阶段:移动端开发技术第三阶段:前端常用框架
fun.apply(thisArg, [argsArray])
-
thisArg:指向谁
-
argArray:传递的值,
必须
包含在数组
里面 -
返回值就是函数的返回值,因为它就是调用函数
- 改变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
=============================================================================
bind()
方法不会调用函数
。但是能改变函数内部this指向
fun.bind(thisArg, arg1, arg2, …)
-
thisArg:指向谁
-
arg1:参数1
-
arg2:参数2
-
返回由指定的this值和初始化参数改造的
原函数拷贝
,简单来说,就是将改造好产生的一个新函数返回给我们。
- 改变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前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
总结
=============================================================
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。
log.csdnimg.cn/img_convert/644efd4ddd0f8d43535f1982ec0da6e4.png)
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。
更多推荐
所有评论(0)