buttonobj.click=function(){ alert(this.id);} // this=buttonobj
或者是指向符合存取條件之global object,如:
close(); // this=window
在這個this變數這麼玄的情況下,有些動態程式設計的便利性,需要去竄改function的this值時,javascript內建提供兩個隱藏method apply/call,來達成變更this的內容,而不需要在function內自行判斷.
利用apply/call變更function的this值
button1obj.click=showMyId; // showMyId的this=button1obj function showMyId(){ alert(this.id); } button2obj.click=function(){ // showMyId的this=button2obj showMyId.apply(this); // 自行指定showMyId function的this值 } div.click=function(){ // showMyId的this=button2obj showMyId.call(button2obj); // 自行指定showMyId function的this值 } showMyId.apply({'id':'NotExistObjId'}); // showMyId的this為自訂array
apply與call的差異
apply(thisobj,argsArray); // 用陣列方式傳入其他參數 call(thisobj,arg0,arg1...); // 分別傳入其他參數
沒有留言:
張貼留言