这三个函数都是指向函数本身的,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>
执行结果:
时间: 2024-10-16 00:24:56