总结一下apply和call的异同点】的更多相关文章

一.图解call.apply.bind的异同 JavaScript中函数可以通过3种方法改变自己的this指向,它们是call.apply.bind.它们3个非常相似,但是也有区别.下面表格可以很直观看出三者的不同 方法 是否直接执行函数 传入的参数 调用方式 call 是 (context,arg1,arg2,arg3...) 第二个参数之后都是实参 function.call(context,arg1,arg2,arg3...) apply 是 (context,[arg1,arg2,arg…
一.call.apply.bind的异同 JavaScript中函数可以通过3种方法改变自己的this指向,它们是call.apply.bind.它们3个非常相似,但是也有区别.下面表格可以很直观看出三者的不同 方法 是否直接执行函数 传入的参数 调用方式 call 是 (context,arg1,arg2,arg3...) 第二个参数之后都是实参 function.call(context,arg1,arg2,arg3...) apply 是 (context,[arg1,arg2,arg3.…
这两个方法的区别在于: 1. apply没有返回值而commit返回boolean表明修改是否提交成功 2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率.而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率. 3. apply方法不会提示任何失败的提示. 由…
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同. 相同点:两个方法产生的作用是完全一样的,第一个参数都是对象: 不同点:从第二个参数起 call()方法参数将依次传递给借用的方法作参数,即f…
相同点: 改变this的指向: var a = { name:"丸子", fn:function(){ console.log(this.name); } } var b = a.fn; b()//undefined b.call(a);//丸子 b.apply(a);//丸子 b.bind(a);//没有被打印 不同点: 1,call和apply都是立即执行,而bind则是返回一个函数: var a = { name:"丸子", fn:function(){ co…
探索 Reflect.apply 与 Function.prototype.apply 的区别 众所周知, ES6 新增了一个全局.内建.不可构造的 Reflect 对象,并提供了其下一系列可被拦截的操作方法.其中一个便是 Reflect.apply() 了.下面探究下它与传统 ES5 的 Function.prototype.apply() 之间有什么异同. 函数签名 MDN 上两者的函数签名分别如下: Reflect.apply(target, thisArgument, arguments…
​ //上下文模式:根据用户传递的参数产生不同的结果 //实现方式:call/apply:这两个都是定义在Function.prototype.call——>目的:任何函数都可以访问到call/apply //call方法的第一个参数表示(本次调用该函数,)函数内部的this的值 function fn(){ console.log(this.name);//张三 } fn();//函数调用模式——>this指向window window自带一个name属性:"" fn.c…
首先来了解一下JS中this的原理: 要访问自己的属性就必须使用 this.属性名 1.this总是指向它的直接调用者: var a={ user:'Artimis', fn:function(){ console.log(this.user) } } a.fn() //Artimis => this指向a var b=a.fn; b() //undefined => this指向window 2. 如果没有找到直接调用者,this就指向window function fn(){ var us…
概念: this是运行环境下的一个系统变量, 由于this在不同的执行环境下有不同的值, 所以在使用this时,多加注意 (使用this之前,先打印) 1,在全局作用域下,this默认指向window(前端运行环境),{}(后端运行环境). 2,在事件函数中,this指向绑定事件的目标 3,在构造函数中,this指向构造函数将要创建的对象 4,在对象中,this指向对象本身 特殊情况:(1) 有函数嵌套时,内层的函数this不会继承外层函数的this的值,会被还原成window 如果像让内层函数…
基本作用:改变对象的执行上下文. this指向执行上下文.(执行环境) this指向的永远是调用该方法的对象 function func(){ this.a=1; console.log(this.a); } 代码中方法执行后控制台输出1,由于func是全局对象window下的一个方法,那么调用该方法的对象就应该是全局对象window,所以this理论上指向的对象就应该是window 如果理论成立,而this.a==1,也就是说变量a是一个全局变量.在控制台上直接输入a或window.a后回车,…