改变this的几种常见方法

call和apply用于改变函数内部的this指向并立即执行,call接受可变数量的参数,apply参数以数组形式传递。bind则返回一个新的函数,保留指定的this值,但不会立即执行。这三个方法都用于控制函数的上下文(this)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.call

1.call 方法是附加在函数调用后面使用,可以忽略函数本身的this指向

2.语法:函数名.call(要改变的this指向,要给函数传递的参数1,要给函数传递的参数2,.......)

var obj = { name: 'Tom'};
function fn(a,b){
    conlose.log(this);
    conlose.log(a);
    conlose.log(b);
}
fn(1,2);
fn.call(obj,1,2);

//   fn()的时候,函数内部的this指向的是window 

// fn(obj,1,2)的时候,函数内部的this了obj

  使用call的方法的时候:

         1.会立即执行函数

         2.第一个参数是你要改变的函数内部的this指向

         3.第二个参数开始,依次是向函数传递参数

2.apply 

 1. apply是附加在函数调用后面使用的,可以忽略函数本身的this指向

 2.语法:函数名.apply(要改变的this指向,[ 要给传递的参数1,要给传递的参数2,....])

var obj = { name: 'Tom' }
function fn(a, b) {
  console.log(this)
  console.log(a)
  console.log(b)
}
fn(1, 2)
fn.apply(obj, [1, 2])

// fn() 的时候,函数内部的 this 指向 window
// fn.apply(obj, [1, 2]) 的时候,函数内部的 this 就指向了 obj 这个对象

使用 apply 方法的时候

  • 会立即执行函数

  • 第一个参数是你要改变的函数内部的 this 指向

  • 第二个参数是一个 数组,数组里面的每一项依次是向函数传递的参数

  3.bind

1.bind 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向

2.和call, apply不同,就是不会立即执行函数,而是返回一个已经改变的this指向的函数

3.语法:var  newFn = 函数名.bind(要改变的this指向);

               newFn(要传递的参数);

var obj = { name: 'Tom' }
function fn(a, b) {
  console.log(this)
  console.log(a)
  console.log(b)
}
fn(1,2);
var newFn = fn.bind(obj);
newFn(1,2);

//fn(1,2)的时候this指向window
// newFn(1,2)的时候执行的是一个和fn一样的函数,只不过里面的this指向改变成了obj

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值