如何修改this指向(js函数)

本文介绍了如何在JavaScript中改变函数内部的this指向,通过call、apply和bind方法,分别展示了它们的使用示例和效果,如call()的直接调用,apply()的数组参数传递,以及bind()的绑定与调用方式。
摘要由CSDN通过智能技术生成

如何修改this指向

  • 1.call(执行环境对象,实参列表)
  • 2.apply(执行环境对象,实参数组列表)
  • 3.bind(执行环境对象,实际参数)()/(执行环境对象)(实际参数)
var obj = {
    name: 'terry',
    sayName: function () {
        console.log(this,this.name);
    }
}
var obj1 = {
    name: 'larry',
    sayName: function () {
        console.log(this, this.name);
    }
}
obj.sayName();
obj1.sayName();

使用node命令查看打印结果
在这里插入图片描述

1.call()
使用call()将this指向obj

var obj = {
    name: 'terry',
    sayName: function () {
        console.log(this,this.name);
    }
}
var obj1 = {
    name: 'larry',
    sayName: function (a,b) {
        console.log(this, this.name,a,b);
    }
}
// obj.sayName();
// obj1.sayName();

// 1.修改this指向 call()
obj1.sayName.call(obj, 1, 2)

node命令查看打印结果,发现修改this指向成功
在这里插入图片描述

2.apply()
apply()方法需要将实参以数组形式表达

// 2.apply()
obj1.sayName.apply(obj, [1, 2])

在这里插入图片描述

3.bind()
bind()方法有两种写法,可以将实参放在任意一个括号内,*括号不能省略

// 3.修改this指向 bind()()
//   bind()返回当前函数本身  bind()()调用函数
obj1.sayName.bind(obj, 1, 2)(); // obj1.sayName.bind(obj)(1, 2);

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值