這三個函數都是指向函數自己的,call()和apply()的第一參數都是這個函數要執行的上下文對象,以後的參數是這個函數執行要傳的參數,不一樣的地方時call是以枚舉的方式傳參,apply是以數組的形式傳參,固然也能夠傳遞arguments對象。bind()是把該函數綁定到指定的context上下文執行環境中,簡單講就是把該函數的this對象指向傳到bind()中的參數context上,並返回一個函數實例。數組
簡單的寫個示例代碼咱們就能夠了然了:app
<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>
執行結果:jsp