美文网首页
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