1. javascript中的this到底指什麼
JavaScript:this是什麼?
定義:this是包含它的函數作為方法被調用時所屬的對象。
說明:這句話有點咬嘴,但一個多餘的字也沒有,定義非常准確,我們可以分3部分來理解它!
1、包含它的函數。2、作為方法被調用時。3、所屬的對象。
看例子:
function to_green(){
this.style.color="green";
}
to_green();
上面函數中的this指的是誰?
分析:包含this的函數是,to_green
該函數作為方法被調用了
該函數所屬的對象是。。?我們知道默認情況下,都是window對象。
OK,this就是指的window對象了,to_green中執行語句也就變為,window.style.color="green"
這讓window很上火,因為它並沒有style這么個屬性,所以該語句也就沒什麼作用。
我們在改一下。
window.load=function(){
var example=document.getElementById("example");
example.onclick=to_green;
}
這時this又是什麼呢?
我們知道通過賦值操作,example對象的onclick得到to_green的方法,那麼包含this的函數就是onclick嘍,
那麼this就是example引用的html對象嘍。
this的環境可以隨著函數被賦值給不同的對象而改變!
下面是完整的例子:
<script type="text/javascript">
function to_green(){
this.style.color="green";
}
function init_page(){
var example=document.getElementById("example");
example.onclick=to_green;
}
window.onload=init_page;
</script>
<a href="#" id="example">點擊變綠</a>
2. js 函數中this指向誰
誰調用函數,this就指向誰
1.this指向的,永遠是對象
2.this指向誰, 不取決與this寫在哪,而是取決於函數在哪調用
3.this指向的旁答對象,我們成為函數的上下文context,也叫函數的調用者
1.通過函數名()直接調用明前:運槐慧指向window
2.通過對象.函數名()調用:指向這個對象
3.通過數組下標.函數名()調用,指向這個數組
4.通過window內置函數( setInterval setTimeout 等)的回調里調用。指向window
5.函數作為構造函數,new關鍵字實例化之後調用,指向實例化對象
3. 在javascript中,function里this的指向是怎樣的
Javascript中一個函數的this關鍵字的行為相對其它語言有些不同。在嚴格模式和非嚴格模式間也有區別。
在大多數情況下,this的值由函數如何調用來決定。this值不能在函數執行過程中賦值設置,並且每次函數調用時this值可能也不相同。ES5通過添加bind方法設置函數的this值,無論函數如何被調用。(this值永久不變)
全局上下文中:
全局執行環境中(函數外部),無論在與不在嚴格模式下this指向全局對象。
console.log(this.document===document);//true
//在web瀏覽器中,window對象即是全局對象:
console.log(this===window);//true
this.a=37;
console.logn(window.a);//37
function上下文
在函數內部,this值依賴於函數如何調用。
簡單調用:
functionf2(){
"usestrict";//使用嚴格模式
returnthis;
}
f2()===undefined;