javascript all,call區別與用法



我們發現apply()和call()的真正用武之地是能夠擴充函數賴以運行的作用域,如果我們想用傳統的方法實現。

1、每個函數都包含兩個非繼承而來的方法:apply()和call()。 
2、他們的用途相同,都是在特定的作用域中調用函數。 
3、接收參數方面不同,apply()接收兩個參數,一個是函數運行的作用域(this),另一個是參數數組。
call()方法第一個參數與apply()方法相同,但傳遞給函數的參數必須列舉出來。 


    var obj1 = {name:"by"};
	var obj2 = {name:"zy"};
	function say(){
		alert(this.name);
	}
	say.call(obj2);//by
	say.apply(obj2);//zy
	
	//傳遞參數
	function say2(num1,num2){
		alert(this.name+","+(num1+num2));
	}
	say2.call(obj2,10,20);//by,30
	say2.apply(obj2,[10,20]);//zy,30



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章