首页 > 移动平台 > 详细

JavaScript 中 call()、apply()、bind() 的用法

时间:2020-03-11 19:29:30      阅读:68      评论:0      收藏:0      [点我收藏+]

1 myFun定义在window中

myFun=function(who){
console.log("name is:"+who)
}
var who1="dog"
var who2="sheep"
this.myFun.call(this,who1)  //输出:name is dog
myFun.call(this,who2)       //输出:name is sheep

myFun   who1 who2都是在window中定义的,myFun的第1个参数this指向window,第2个参数才是函数本身定义的参数。

2  myFun定义在obj1中

var obj1={
   name:dog,
   myFun:function(where){
console.log("name is:"+this.name + "出生在"+where)
}
}
obj1.myFun.call(obj1,"北京")  //name is:dog出生在北京
var obj2={
  name:sheep,
}
obj1.myFun.call(obj2, "上海")   //name is:sheep出生在上海
obj1.myFun.apply(obj2, ["上海"])
obj1.myFun.bind(obj2, 上海)

可将上述代码复制到chrome console中查看运行结果。

结论:

 call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:
    call的参数是直接放进去的,第二第三第n个参数全都用逗号分隔,直接放到后面  obj.myFun.call(db,‘成都‘, ... ,‘string‘ );
    apply的所有参数都必须放在一个数组里面传进去  obj.myFun.apply(db,[‘成都‘, ..., ‘string‘ ]);
    bind除了返回是函数以外,它 的参数和call 一样。
    
    当然,三者的参数不限定是string类型,允许是各种类型,包括函数 、 object 等等!

 

参考:https://www.cnblogs.com/Shd-Study/p/6560808.html

 

JavaScript 中 call()、apply()、bind() 的用法

原文:https://www.cnblogs.com/pu369/p/12464332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!