JS中call,apply和bind方法

1.來歷
在js中所有的函數都是Function的實例,而且對於Function來說,它的原型即Function.prototype中含有很多東西,其中call,apply和bind方法就是Function原型中的方法,所以根據原型的規則,所有的函數都可以使用原型中屬性和方法,所以來說,對於所有的函數都可以使用call,apply和bind方法。
簡單一句話:call,apply和bind都是Function原型中的方法,而所有的函數都是Function的實例。
2.作用
就是改變this的指向。或者說 強行用其他對象來調用一個函數。

除此之外還能在構造方法有中屬性和函數的繼承體現
3.區別
區別主要是在於方法的實現形式和參數傳遞上的不同
①:函數.call(對象,arg1,arg2…)
②:函數.apply(對象,[arg1,arg2,…])
③:函數.bind(對象,arg1,arg2,…)() 注:bind返回的是一個函數體,並不會直接執行函數

實例代碼:

  function show(sex){
		console.log("姓名爲"+this.yourname+",性別爲"+sex);

	}
	var person={
		yourname:"張三",
		age:14
	};
	show.call(person,"男");//姓名爲張三,性別爲男
	show.apply(person,['女']);//姓名爲張三,性別爲女
	show.bind(person,"未知")();//姓名爲張三,性別爲未知
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章