js中call方法和apply方法以及bind方法的区别

js中call方法和apply方法以及bind方法的区别

js中call方法和apply方法以及bind方法的区别

call()、apply()、bind() 都是用来重定义 this 这个对象

  var person={name:"jack",age:"14"};

区别一(调用方式):
call()/apply() 是立即调用函数
bind是将函数返回

  //调用方式
  function fun(){
  	console.log("姓名:"+this.name+",年龄:"+this.age);
  }
  //fun();  //姓名:,年龄:undefined
  fun.call(person);   //姓名:jack,年龄:14
  fun.apply(person);  //姓名:jack,年龄:14
  fun.bind(person)(); //姓名:jack,年龄:14

bind方法后面多了个() 所以bind返回的是一个新的函数,你必须调用它才会被执行

区别二(传参方式):
call 的参数是用逗号分隔,
apply 的所有参数都必须放在一个数组里面传进去
bind 可以像call那样传参,但是由于bind返回的仍然是一个函数,所以我们还可以在调用的时候再进行传参

	function fun(color,color1){
    	console.log("姓名:"+this.name+",年龄:"+this.age+",喜欢的颜色是"+color+"和"+color1);
    }
    
	fun.call(person,"白色","蓝色");        //用逗号分隔
    fun.apply(person,["粉红色","浅灰色"]); //所有参数都必须放在一个数组里面
    fun.bind(person,"紫色","黄色")();     //可以像call那样传参
	fun.bind(person)("黑色","红色");      //可以调用的时候再进行传参
    

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值