日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

深入解析Javascript中this关键字的使用

發(fā)布時間:2025/7/14 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入解析Javascript中this关键字的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

深入解析Javascript中面向?qū)ο缶幊讨械膖his關(guān)鍵字

在Javascript中this關(guān)鍵字代表函數(shù)運行時,自動生成的一個內(nèi)部對象,只能在函數(shù)內(nèi)部使用。比如:

function TestFunction(){this.demoVal='This is a demo variable'; }; View Code

隨著函數(shù)使用的場合不同,this的值會發(fā)生改變。但是有一個總的原則:this指的是調(diào)用函數(shù)的那個對象。

接下來分情況討論this關(guān)鍵字的使用:

1. 純粹的函數(shù)調(diào)用(這是函數(shù)的通常用法,屬于全局性調(diào)用),this代表全局性對象Global.Demo程序如下:

function TestFunction(){this.demoVal='This is a demo variable';alert(this.demoVal); };TestFunction(); //This is a demo variable View Code

接下來證明此時的this代表全局對象,Demo程序如下:

var globalVal='This is a demo global variable';function TestFunction(){alert(this.globalVal); };TestFunction(); //This is a demo global variable View Code

2. 作為對象的方法調(diào)用(這時this指向上一級對象),Demo程序如下:

function TestFunction(){alert(this.demoVal); };var obj={}; obj.CallFunction=TestFunction; obj.demoVal='This is a object variable';obj.CallFunction(); //This is a object variable View Code

3. 作為構(gòu)造函數(shù)調(diào)用,所謂的構(gòu)造函數(shù)就是通過這個函數(shù)生成一個新的Object對象。此時,this就是指向這個新對象。Demo程序如下:

function TestFunction(){this.deomVal='This is a demo variable'; };var obj=new TestFunction();alert(obj.deomVal); //This is a demo variable View Code

接下來的代碼證明this不是指向全局對象:

var demoVal='This is a global variable';function TestFunction(){this.demoVal='This is a local variable'; };var obj=new TestFunction();alert(demoVal); //This is a global variable View Code

以上代碼顯示demoVal值根本沒有改變,因此證明this不是指向全局的對象。

4. 使用apply調(diào)用,apply函數(shù)可以改變函數(shù)的執(zhí)行上下文,apply是函數(shù)對象的一個方法,它的作用是改變函數(shù)的調(diào)用對象,即函數(shù)的執(zhí)行上下文。它的第一個參數(shù)表示改變后調(diào)用這個函數(shù)的對象, 因此,this指向的是第一個參數(shù),Demo實例如下:

var demoVal='This is a demo variable';function TestFunction(){alert(this.demoVal); };var obj={}; obj.demoVal='This is an object demo variable'; obj.TestFunction=TestFunction;obj.TestFunction.apply(); //This is a demo variable View Code

apply()的參數(shù)為空時,默認調(diào)用全局對象。因此,這時的運行結(jié)果為:'This is a demo variable',證明this指的是全局對象。

如果將以上代碼的最后一行改為:obj.TestFunction.apply(obj),則輸出的結(jié)果為:'This is an object demo variable'。證明此時的this指向obj。

?

轉(zhuǎn)載于:https://www.cnblogs.com/chengbing2011/p/4226285.html

總結(jié)

以上是生活随笔為你收集整理的深入解析Javascript中this关键字的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。