关于this的学习
11/20/2025, 2:52:48 PM
#JavaScript#历史文章迁移
this的值取决于它出现的上下文:函数、类或全局。
换句话说,this的指向只有被调用时才能确定,所以可能出现以下指向:
①全局作用域中的函数,其内部this指向window;
②对象内部的函数,其this指向对象本身;
③构造函数内部的this指向生成的实例;
④由apply、 call、bind 改造的函数:其 this指向第一个参数;
⑤箭头函数没有自己的this,看其外层的是否有函数,如果有,外部箭头函数的 this就是指向内部箭头函数的this,如果没有,则 this 指向window。
如何改变this的指向呢?使用上面提到的apply,call和bind三个方法。
apply(thisArg, argsArray)
bind(thisArg, arg1, arg2, /* …, */ argN)
call(thisArg, arg1, arg2, /* …, */ argN)
三个函数的第一个参数都是this要指向的对象,apply 和 call 的用法几乎相同, 唯一的差别在于:当函数需要传递多个变量时, apply 可以接受一个数组作为参数输入, call 则是接受一系列的单独变量。bind会返回一个新的函数,要生效还得调用一次。