深入解析Javascript中this关键字的使用
深入解析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 Code2. 作為對象的方法調(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 Code3. 作為構(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 Codeapply()的參數(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ecshop 首页添加某个分类下面的商品
- 下一篇: Java多线程-线程的调度(合并)