js中的call()和apply()方法

本文详细解析了JavaScript中的call和apply方法,包括它们的语法、应用实例以及与bind方法的区别。阐述了如何通过这两个方法改变函数运行时的上下文,即this的指向,实现对象之间的方法借用。

参考:js中的call()和apply()方法
call、apply、bind方法详解

call()和apply()作用一样,接收参数的方法不太一样

一、call()和apply()方法定义

语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]),apply([thisObj[,argArray]])
应用某一对象的一个方法,用另一个对象替换当前对象。
示例:

    function Animal(){    
        this.name = "Animal";    
        this.showName = function(){    
            alert(this.name);    
        }    
    }    
    function Cat(){    
        this.name = "Cat";    
    }    
    var animal = new Animal();    
    var cat = new Cat();    
    //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    
    //输入结果为"Cat"    
    animal.showName.call(cat,",");    
    //animal.showName.apply(cat,[]);  
可以看成:cat继承了animal的showName方法并调用执行
二、call()和apple()异同

同:第一个参数都是函数运行的作用域(this)
异:call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组或类数组(如arguments 还有 callee,caller…)

三、原理

call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。
上述实例中,即把animal的this指向cat。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值