js中call和apply的区别

本文详细解释了JavaScript中call和apply这两个方法的区别及其使用场景。通过具体的代码示例,展示了如何利用这两个方法实现函数调用及对象继承。

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

之前在看那个判断数据类型的时候,用到了call然后我就了解了一下,call和apply的区别。so 我就深入的了解了一下。

定义

apply:应用某一对象的方法,用另一个对象去替代当前对象
B.apply(A,array) 用A对象去调用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象
B.call(A,arg),用A对象调用B对象的方法。
区别:call和apply的区别就是他俩传入的参数不一样。
光说不练没啥用,来个栗子说明下

function add(a,b){
    return a+b;
}
function sub(a,b){
    return a_b;
}
var r = sub.apply(add,[1,2])//用add去调用sub的方法
var r1= add.apply(sub,[1,2])//同上
console.log(r+"------"+r1)//结果是-1-----3

上面这个是基本用法,下面来一个继承的玩

function Person(name){
    this.name = name;
    this.showName= function(){
        console.log(name);
    }
}
function Programe(){
    Person.apply(this,[name]);
}
var programe = new Programe("java");
programe.showName();//java
//Person.call(this,name);

call和apply的区别也差不多了,该注意地方就是用apply的时候,不管是一个还是多个都要写在数组里面,不然就是typeerror错误。

鄙人拙见,如有出入,还请指正,谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值