call()与apply()的区别与作用

这篇博客探讨了JavaScript中call和apply方法的基本概念、共同作用及它们的区别。这两个方法都用于改变函数内部的this指向,允许在不同对象上下文中调用方法。主要区别在于传递参数的方式:call接受单独列出的参数,而apply接受参数数组。通过示例代码展示了如何使用这两个方法,使B对象调用A对象的tip方法并改变this的指向,从而弹出'B',进一步阐述了它们的功能和用法。
摘要由CSDN通过智能技术生成

1、概念

call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同。

2、作用:

call()方法和apply()方法的作用相同:改变this指向

3、他们的区别在于接收参数的方式不同:

call():第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。在使用call()方法时,传递给函数的参数必须逐个列举出来。

apply():传递给函数的是参数数组

<script type="text/javascript">
    function A(){
        this.flag = 'A';
        this.tip = function(){
            alert(this.flag);
        };
    }
    function B(){
        this.flag = 'B';
    }
    var a = new A();
    var b = new B();
    //a.tip.call(b);
    a.tip.apply(b);
</script>

4、代码解释

(1)实例代码定义了两个函数A和B,A中包含flag属性和tip属性(这个属性赋值一个函数),B中有一个flag属性。

(2)分别创建A和B的对象a和b。

(3)无论是a.tip.call(b);和a.tip.apply(b);运行的结果都是弹出B。

(4)从结果中可以看出call和apply都可以让B对象调用A对象的tip方法,并且修改了this的当前作用对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值