博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apply call bind方法的区别和含义
阅读量:5749 次
发布时间:2019-06-18

本文共 1156 字,大约阅读时间需要 3 分钟。

用法示例与解析:

apply

 

function applyTest(a,b){    console.log(this.pro, a,b)};applyTest.apply({pro: 'apply'}, [1, 2]);  //apply 1 2

call

function callTest(a, b){    console.log(this.pro, a, b)  };callTest.call({pro: 'call'}, 1, 2); //call 1 2

bind

 

function bindTest(a, b){    console.log(this.pro, a, b)  };var mid = bindTest.bind({pro: 'bind'}, 1);mid(2); //bind 1 2

 

apply和call以及bind都是Function.prototype的方法函数,每个继承自Function的函数都有这三个方法。

相同点:

  都可以改变函数内部的this指向

  所传入的第一个参数都是this所要指向的那个对象

不同点:

  apply和call只要调用就会立即执行函数得到结果,而bind只是会返回一个函数,需要再次执行这个函数才会运行函数。

  apply传入的第二个参数是可选的,但是只能是数组形式或者是arguments;

  call的第二个以及之后的参数是以单个参数形式传入的,与原函数的参数一一对应;

  bind的参数可以在不同阶段加入,但与原函数的参数也是一一对应的。

 

用途:

  在多个对象要执行同一个方法的时候可以不给每个对象都填加此方法,灵活度高

  apply可以实现的操作:

数组的降纬 var sou=[[1,2],[3,4],[5,6]];var res=Array.prototype.concat.apply(res, sou)console.log(res); //[1,2,3,4,5,6] 比较两个数组中元素的大小 var sou=[5,9,4,3.2,5]; var res = Math.max.apply(null, sou); console.log(res) //9 实现bind函数 Function.prototype.bind || Function.prototype.bind=function(tar){
  var fn=this   return(     function(){
      fn.apply(tar, arguments)     }   ) }

  

 

转载于:https://www.cnblogs.com/zhaozhipeng/p/8066541.html

你可能感兴趣的文章
python 模块使用
查看>>
1.3配置存储单元(nbu重删池)
查看>>
Nginx配置代码片
查看>>
前后端分离中,Gulp实现头尾等公共页面的复用
查看>>
Android开发者掘金(1)
查看>>
java.util.Calendar
查看>>
PhpStorm/webStorm 去掉烦人的小灯泡
查看>>
【转】Java面试题全集2.2(下)
查看>>
Hadoop核心组件之HDFS
查看>>
关于关闭Eclipse的控制台自动跳出
查看>>
Android下的一些调试手段(含kernel调试办法)
查看>>
Go语言学习笔记九: 指针
查看>>
Python基础之集合set
查看>>
P1765 手机_NOI导刊2010普及(10)
查看>>
洛谷—— P1022 计算器的改良
查看>>
MyISAM与InnoDB的区别
查看>>
配置网络连接
查看>>
pymssql
查看>>
json解析写入mysql
查看>>
(转)直接保存对象的数据库——db4o
查看>>