美文网首页
apply call

apply call

作者: Luffy_sanji | 来源:发表于2017-06-02 15:18 被阅读0次

    $(this).val()

    cookieUtil.set();

    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。传入多少个参数是不确定的,所以使用apply是最好的.

    通常我们会使用 _this , that , self 等保存 this

    JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

    functionfruits() {}

    fruits.prototype = {

    color:"red",

    say:function() {

    console.log("My color is "+this.color);

    }

    }

    varapple =newfruits;

    apple.say();//My color is red

    但是如果我们有一个对象banana= {color : "yellow"} ,我们不想对它重新定义 say 方法,那么我们可以通过 call 或 apply 用 apple 的 say 方法:

    banana = {

    color:"yellow"

    }

    apple.say.call(banana);//My color is yellow

    apple.say.apply(banana);//My color is yellow

    所以,可以看出 call 和 apply 是为了动态改变 this 而出现的,当一个 object 没有某个方法(本栗子中banana没有say方法),但是其他的有(本栗子中apple有say方法),我们可以借助call或apply用其它对象的方法来操作。

    apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;

    apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;

    apply 、 call 、bind 三者都可以利用后续参数传参;

    bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

    相关文章

      网友评论

          本文标题:apply call

          本文链接:https://www.haomeiwen.com/subject/mzcufxtx.html