阅读背景:

JS笔记3.2--函数成员/函数的apply/call/bind/sort/toString方法/this指向/闭包/垃圾回收_jiaody111的博客

来源:互联网 

apply和call:改变this指向

    //apply和call的使用方法
    /*
    * apply的使用语法:参数以数组的形式传递
    * 函数名或方法名.apply(对象,[参数1,参数2,...]);
    * call的使用语法:参数以枚举的形式传递
    * 函数名或方法名.call(对象,参数1,参数2,...);
    * 想要使用其他对象的某个方法:其他对象.方法名.apply(当前对象,参数,...);
    * 这个方法就会被当前的对象所使用,同时这个方法中的this就是当前的对象,在调用方法的时候改变了this的指向
    * 作用:改变this的指向
    * 不同的地方:参数传递的方式是不一样的
    *
    * 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
    *
    * 实例对象调用方法,方法要么在实例对象中存在,要么在原型对象中存在
    * */
    function f1() {
      console.log(this);
    }
    //f1是函数,f1也是对象
    f1.apply();
    f1.call();    //对象调用方法,说明该对象中有这个方法
    console.log(f1.__proto__==Function.prototype);
    //所有的函数都是Function的实例对象
    console.log(Function.prototype);//ƒ () { [native code] }
    //apply和call方法实际上并不在函数这个实例对象中,而是在Function的prototype中
    //apply和call的使



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: