这三个函数都是指向函数本身的,call()和apply()的第一参数都是这个函数要执行的上下文对象,之后的参数是这个函数执行要传的参数,不同的地方时call是以枚举的方式传参,apply是以数组的形式传参,当然也可以传递arguments对象。bind()是把该函数绑定到指定的context上下文执行环境中,简单讲就是把该函数的this对象指向传到bind()中的参数context上,并返回一个函数实例。
简单的写个示例代码我们就可以了然了:
<script> function sayHi(name,greeting){ var name = name||this.name, greeting = greeting||this.greeting; console.log("Hello "+name+","+greeting); } var name = "Terry", greeting = "how are you?", me = {name:"John", greeting:"你好!"}; sayHi.call(this,name,greeting); sayHi.call(this); sayHi.apply(this,[name,greeting]); sayHi.apply(me,[me.name,me.greeting]); sayHi.call(me,me.name,me.greeting); //bind()会返回函数实例,后面加()直接执行 sayHi.bind()(); sayHi.bind(me)(); </script>
执行结果:
转载于:https://www.cnblogs.com/dingyuanxin/p/4143042.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109632.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...