欢迎您光临自学哈网,只为分享网络知识教程,供大家学习参考!

「自学哈网」JS中怎么改变this的指向

作者 : 自学哈 本文共1060个字,预计阅读时间需要3分钟 2023-08-4 共74人阅读
也想出现在这里? 联系我们

1、call() 方法

call() 方法的个参数必须是指定的对象,然后方法的原参数,挨个放在后面。

1)个参数:传入该函数this执行的对象,传入什么强制指向什么;

2)第二个参数开始:将原函数的参数往后顺延一位

用法: 函数名.call()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串call
    console.log(a + b);
}
//使用call() 方法改变this指向,此时个参数是 字符串call,那么就会指向字符串call
fun.call('call', 2, 3)  // 后面的参数就是原来函数自带的实参

2、apply() 方法

apply() 方法的个参数是指定的对象,方法的原参数,统一放在第二个数组参数中。

1)个参数:传入该函数this执行的对象,传入什么强制指向什么;

2)第二个参数开始:将原函数的参数放在一个数组中

用法: 函数名.apply()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串apply
    console.log(a + b);
}
//使用apply() 方法改变this指向,此时个参数是 字符串apply,那么就会指向字符串apply
fun.apply('apply', [2, 3])  // 原函数的参数要以数组的形式呈现

3、bind() 方法

bind() 方法的用法和call()一样,直接运行方法,需要注意的是:bind返回新的方法,需要重新 调用 是需要自己手动调用的

用法: 函数名.bind()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串bind
    console.log(a + b);
}
//使用bind() 方法改变this指向,此时个参数是 字符串bind,那么就会指向字符串bind
let c = fun.bind('bind', 2, 3);
c(); // 返回新的方法,需要重新调用
// 也可以使用下面两种方法进行调用
// fun.bind('bind', 2, 3)();
// fun.bind('bind')(2, 3);

 

本站声明:
本站所有资源来源于网络,分享目的仅供大家学习和交流!如若本站内容侵犯了原著者的合法权益,可联系邮箱976157886@qq.com进行删除。
自学哈专注于免费提供最新的分享知识、网络教程、网络技术的资源分享平台,好资源不私藏,大家一起分享!

自学哈网 » 「自学哈网」JS中怎么改变this的指向
也想出现在这里? 联系我们
© 2022 Theme by - 自学哈网 & WordPress Theme. All rights reserved 浙ICP备2022016594号