欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

call、apply的区别:

程序员文章站 2022-05-04 14:21:53
call()、apply()的区别: 相同点: 1.call()和apply()都可以用来间接调用函数,都可以显式调用所需的this。即,任何函数可以作为任何对象的方法来调用。 2.两个方法都可以指定调用实参。 区别: call()和apply()的基本区别:在于将参数传递给函数。 call():使 ......

 call()、apply()的区别:

相同点:

1.call()和apply()都可以用来间接调用函数,都可以显式调用所需的this。即,任何函数可以作为任何对象的方法来调用。

2.两个方法都可以指定调用实参。

 

区别:

call()和apply()的基本区别:在于将参数传递给函数。

call():使用其自有的实参列表作为函数的参数;

apply():要求以数组的形式传入参数。 

   function track(o,m){
        var original =o[m];
        o[m] =function( ){
            console.log(new date(),m);
            var results =original.apply(this,arguments);
            console.log(new date(),m);
            return results;
        }
    }    

 

它们的用法可以通过给定的例子进行说明:

<script>
var someobject = {
    myproperty:'foo',
    mymethod:function (prefix,posfix) {
        console.log(prefix + this.myproperty + posfix);
    }
};
someobject.mymethod('<','>');//foo

var someotherobject = {
    myproperty:'bar'
};
someobject.mymethod.call(someotherobject,'<','>');//bar
someobject.mymethod.apply(someotherobject,['<','>']);//bar
</script>