call,apply,bind用法和区别

本文解析了JavaScript中bind、call、apply函数的作用与区别,包括它们如何改变函数运行时的this指向,以及如何用于继承。同时,展示了这些函数在实际场景中的应用,如求数组中的最大值、最小值,将伪数组转化为数组等。

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

作用:改变函数运行时this的指向

bind和apply,call的区别

call和apply改变了函数的this上下文后便执行该函数,而bind则是返回改变了上下文后的一个函数,不会直接调用。

call、apply的区别

他们俩之间的差别在于参数的区别,call和aplly的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数

fn.call(obj, arg1, arg2, arg3...);
fn.apply(obj, [arg1, arg2, arg3...]);

应用

求数组中的最大和最小值

let arr = [34,5,3,6,54,6,-67,5,7,6,-8,687];
Math.max.call(Math, ...arr)
Math.max.apply(Math, arr)
let res = Math.max.bind(Math, ...arr)
res()

将伪数组转化为数组

var arrayLike = {
            0: 'qianlong',
            1: 'ziqi',
            2: 'qianduan',
            length: 3
        }
let newarr = Array.prototype.slice.call(arrayLike);

利用call和apply做继承

var Person = function (name, age) {
  this.name = name;
  this.age = age;
};
var Girl = function (name) {
  Person.call(this, name);
};
var Boy = function (name, age) {
  Person.apply(this, arguments);
}
var g1 = new Girl ('qing');
var b1 = new Boy('qianlong', 100);```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值