? ? ? ?this是Javascript語言的一個關(guān)鍵字。
它代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用灭美。比如,
function test() ?{
? ? ? ? ? ?this.x = 1;
}
隨著函數(shù)使用場合的不同选泻,this的值會發(fā)生變化冲粤。但是有一個總的原則,那就是this指的是页眯,調(diào)用函數(shù)的那個對象梯捕。
阮一峰博客?阮一峰this
1.this指向的形式4種
a.如果是一般函數(shù),this指向全局對象window;
b.在嚴格模式下"use strict",為undefined.
c.對象的方法里調(diào)用,this指向調(diào)用該方法的對象.
d.構(gòu)造函數(shù)里的this,指向創(chuàng)建出來的實例.
a,b
定義一個_this變量來存儲this值,使全局對象里面的this 指向person 的this
this最近的函數(shù)是全局對象setTimeout
c
2. 改變this指向的方式
以下屬于函數(shù)的方法
改變this的指向并且執(zhí)行調(diào)用函數(shù)
.call(),? call(thisScope, arg1, arg2, arg3...)
.apply(), apply(thisScope, [arg1, arg2, arg3...]);兩個參數(shù)
而bind 改變this的指向,返回的是函數(shù)
.bind()? bind(thisScope, arg1, arg2, arg3...)
call,可以傳入多個參數(shù),改變this指向后立刻調(diào)用函數(shù)
apply,可以傳入數(shù)組
bind改變this指向后,返回的是函數(shù)