javascript中的this到底指什么
JavaScript:this是什么?
定義:this是包含它的函數作為方法被調用時所屬的對象。
說明:這句話有點咬嘴,但一個多余的字也沒有,定義非常準確,我們可以分3部分來理解它!
1、包含它的函數。2、作為方法被調用時。3、所屬的對象。
看例子:
function to_green(){
*="green";
}
to_green();
上面函數中的this指的是誰?
分析:包含this的函數是,to_green
該函數作為方法被調用了
該函數所屬的對象是。。?我們知道默認情況下,都是window對象。
OK,this就是指的window對象了,to_green中執行語句也就變為,*="green"
這讓window很上火,因為它并沒有style這么個屬性,所以該語句也就沒什么作用。
我們在改一下。
*=function(){
var example=*mentById("example");
*k=to_green;
}
這時this又是什么呢?
我們知道通過賦值操作,example對象的onclick得到to_green的方法,那么包含this的函數就是onclick嘍,
那么this就是example引用的html對象嘍。
this的環境可以隨著函數被賦值給不同的對象而改變!
下面是完整的例子:
<script type="text/javascript">
function to_green(){
*="green";
}
function init_page(){
var example=*mentById("example");
*k=to_green;
}
*=init_page;
</script>
<a href="#" id="example">;點擊變綠</a>
JavaScript腳本中的this用法詳細詮釋
this語句用于引用當前對象,并可以引用當前對象相應的屬性。
this語句的使用范圍必須局限于函數范圍內惑它的調用函數范圍內。語法位:this[.屬性]如果未包括屬性參數,則傳遞當前對象。
但是為了得到一個結果,建議為語句附上有效的屬性。例如: 簡寫啊
【javascript中這幾語句是什么意思?好哥哥,如下:varaNumbers=
var aNumbers = new Array();//定義一數組var sMessage = "你輸入了:\n";//定義變量var iTotal = 0;//定義變量var vUserInput;//定義變量var iArrayIndex = 0;//定義變量do{// do while循環vUserInput = prompt("輸入一個數字,或者'0'退出","0");//javascript的輸入提示框 你可以百度一下該關鍵字 查詢相關使用方法aNumbers[iArrayIndex] = vUserInput;//將輸入的值放入數組中iArrayIndex++;//變量+1iTotal += Number(vUserInput);//計算輸入數字的總和 Number函數是將括號里的轉換成數字 失敗則返回 Nan 具體用法也是百度哦.sMessage += vUserInput + "\n";//這個是將你每次輸入數字連接起來 拼裝成字符串 兩個數字之間有換行 \n 就是換行的意思.}while(vUserInput != 0) //while 里面 如果你輸入了0 那么就會用alert函數彈出你先前輸入的數字 并且在do里面計算的結果sMessage += "總數:" + iTotal;alert(sMessage);//總之大概就是這個意思了 你好好研究一下.把各個關鍵函數百度一下 你就了解了.。
JavaScript腳本中的this用法詳細詮釋
this語句用于引用當前對象,并可以引用當前對象相應的屬性。this語句的使用范圍必須局限于函數范圍內惑它的調用函數范圍內。語法位:this[.屬性]
如果未包括屬性參數,則傳遞當前對象。但是為了得到一個結果,建議為語句附上有效的屬性。
例如: 簡寫啊
<function abc(name)
{
alert("歡迎"+name);
}
<input type="t1" name="t1" size=20>
<input type="button" value="單擊" onclick="abc(*)">
如果你在文本框內寫上“123” 這樣就會彈出對話框 “歡迎123”。
關于JS的THIS
這個問題問到js的精髓了。
在js中,萬物皆對象,函數只是對象的一種。js的this,指代著當前對象的自身(itself),但通過你的問題的內容,發現,你關注的地方并不單單在this關鍵詞。
function a(value){ * =value; alert(*);}上面的這個函數語句,意味著,創建了名字為a,參數為value的函數對象:這個函數對象有一個來自于參數的動態屬性value;這個函數對象還有一個返回值為void的window內置函數alert;這個函數對象自身沒有返回值(void)。alert(new a(1).value);上面的這個語句,意味著,新建一個參數為1的a對象,并把這個對象的value作為參數賦值給window的alert函數,并執行window的alert函數。
在上面的語句中,測試時,會出現兩次警告框,且警告框的內容都是1,這是因為在新建a對象的時候,執行了一次alert,拿到a對象的value后,又執行了一次alert。alert(window.a(3));上面的這個語句,意味著,把3作為window對象的a函數的一個參數,執行a函數。
在上面的語句中,測試時,也會出現兩次警告框,但是第一次是3,第二次就是undefined了,這是因為,window.a(3)執行的時候,會alert一下,內容就是3,alert(。)執行的時候,因為里面的window.a(3)沒有返回值,所以alert的參數就是沒有,所以就導致彈出了一個“undefined”function a(){ fucntion b(){} return b;}new a()()可以這么寫(new a()())的原因是:1、“new a()” ,這個是個對象創建過程,就是說,這樣可以創建一個全新的函數對象。
2、第二個“()”,這個是個函數執行過程,就是說,加上一對“()”后,這個對象函數才開始執行。a().b()不可以這么寫的原因是:a()會讓這個a函數對象執行后,返回的是一個名字為沒有名字的空函數對象,這個空函數對象里面,并沒有一個名字叫b的方法。
你如果想讓上面的a里面的b函數順利執行,可以參考下面的案例:function a(){ function b(){alert(111)} return b;}a()();//這樣你就順利的看到這個b函數執行了。最后給你一個讓你頭暈的案例,呵呵。
考慮一下是如何執行的,這個案例你完全搞明白后,基本上js的函數對象返回值問題,就不會再有了。function a(){ this.b = function (){ return this.c = function(){ alert(111); } }}(new a().b())();。