this
實際上是函數(shù)被調(diào)用時建立的一個綁定,指向完全由函數(shù)被調(diào)用時的調(diào)用點來決定
http://www.itdecent.cn/p/86a9c5645e26
JavaScript 中的 this 含義要豐富得多,它可以是全局對象、當(dāng)前對象或者任意對象,這完全取決于函數(shù)的調(diào)用方式。JavaScript 中函數(shù)的調(diào)用有以下幾種方式:作為對象方法調(diào)用,作為函數(shù)調(diào)用,作為構(gòu)造函數(shù)調(diào)用,和使用 apply 或 call 調(diào)用
this不是編寫時綁定,而是運行時綁定。它依賴于函數(shù)調(diào)用的上下文條件。this綁定和函數(shù)聲明的位置無關(guān),反而和函數(shù)被調(diào)用的方式有關(guān)
當(dāng)一個函數(shù)被調(diào)用時,會建立一個活動記錄,也稱為執(zhí)行環(huán)境。這個記錄包含函數(shù)是從何處(call-stack)被調(diào)用的,函數(shù)是 如何 被調(diào)用的,被傳遞了什么參數(shù)等信息。這個記錄的屬性之一,就是在函數(shù)執(zhí)行期間將被使用的this引用。
if (!this.loadingWait)
{
this.loadingWait = true;
console.log('----------debug jjj--> ' + courseLastName )
CourseUtil.openCourse(courseLastName, switchPage.bind(this) );
}
else
{
toastShort("哥,請等一下,我在努力解壓文件中");
}
function switchPage( ret )
{
this.loadingWait = false;
if ( ret === 1 && this.loadingWait === false )
{
navigator.push({name:'CoursaDetailPage', params:{lesson:'zyx'}, component:CoursaDetailPage});
}
else
{
toastShort("catalogpage open file fail");
}
}