4 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
Javascript中一個(gè)函數(shù)的this關(guān)鍵字的行為相對(duì)其它語(yǔ)言有些不同。在嚴(yán)格模式和非嚴(yán)格模式間也有區(qū)別。
在大多數(shù)情況下,this的值由函數(shù)如何調(diào)用來(lái)決定。this值不能在函數(shù)執(zhí)行過程中賦值設(shè)置,并且每次函數(shù)調(diào)用時(shí)this值可能也不相同。ES5通過添加bind方法設(shè)置函數(shù)的this值,無(wú)論函數(shù)如何被調(diào)用。(this值永久不變)
全局上下文中:
全局執(zhí)行環(huán)境中(函數(shù)外部),無(wú)論在與不在嚴(yán)格模式下this指向全局對(duì)象。
console.log(this.document === document); //true
//在web瀏覽器中,window對(duì)象即是全局對(duì)象:
console.log(this === window); // true
this.a=37;
console.logn(window.a); //37
function上下文
在函數(shù)內(nèi)部,this值依賴于函數(shù)如何調(diào)用。
簡(jiǎn)單調(diào)用:
function f2(){
"use strict";//使用嚴(yán)格模式
return this;
}
f2() === undefined;

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
在js中,調(diào)用function的apply()或者call()可以覆蓋this原先的指向。但是call()和apply()的用法略有不同;
用apply()時(shí),參數(shù)需要用Array;
JavaScript有一套完全不同于其它語(yǔ)言的對(duì)this的處理機(jī)制。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
就是函數(shù)本身的意思 比如 function demo(){ this.width = 100; this.height = 200; return this } 這里的意思就是本身這個(gè)函數(shù)的寬度 高度用this代替 其實(shí)它的原型是 function demo() { var p = new Object(); p.width = 100; p.heighr = 200; return p; } 和這種方法是一個(gè)效果

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
這么寫就會(huì)好理解些
document.getElementById("textinput").onclick=function(){
alert(this.value);
}
這樣就好理解了,this就是指 document.getElementById("textinput")
添加回答
舉報(bào)