apply call

$(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 则是立即调用 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 后记,勉强算是个正果 老夫子:没天赋又不努力的结果 Book wanted read again What: A ...
    杨小邪yxr阅读 4,966评论 0 0
  • Effective TensorFlow Table of Contents TensorFlow Basics ...
    法布雷加嘻阅读 3,652评论 0 1
  • Anatomy of matplotlib Scipy 2015 Instructor: Benjamin Roo...
    flyingsoul阅读 1,820评论 0 0
  • 活在尘世噪音里 2017.01.27除夕 堵在十字路口竟不知该怎样挪步,恨不得变成悟空腾云驾雾而过。 新年之际,街...
    小杜之母阅读 3,101评论 2 3