免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
js中this

JavaScript中this的使用

在JavaScript中this變量是一個(gè)令人難以摸清的關(guān)鍵字,this可謂是非常強(qiáng)大,充分了解this的相關(guān)知識(shí)有助于我們?cè)诰帉懨嫦驅(qū)ο蟮腏avaScript程序時(shí)能夠游刃有余。

對(duì)于this變量最要的是能夠理清this所引用的對(duì)象到底是哪一個(gè),也許很多資料上都有自己的解釋,但有些概念講的偏繁雜。而我的理解是:首先分析this所在的函數(shù)是當(dāng)做哪個(gè)對(duì)象的方法調(diào)用的,則該對(duì)象就是this所引用的對(duì)象。

 

示例一、

var obj = {};

obj.x = 100;

obj.y = function(){ alert( this.x ); };

obj.y();    //彈出 100

 

這段代碼非常容易理解,當(dāng)執(zhí)行 obj.y() 時(shí),函數(shù)是作為對(duì)象obj的方法調(diào)用的,因此函數(shù)體內(nèi)的this指向的是obj對(duì)象,所以會(huì)彈出100。

 

示例二、

var checkThis = function(){

    alert( this.x); 

};

var x = 'this is a property of window';

var obj = {};

obj.x = 100;

obj.y = function(){ alert( this.x ); };

obj.y();    //彈出 100

checkThis();    //彈出 'this is a property of window'

這里為什么會(huì)彈出 'this is a property of window',可能有些讓人迷惑。在JavaScript的變量作用域里有一條規(guī)則“全局變量都是window對(duì)象的屬性”。當(dāng)執(zhí)行 checkThis() 時(shí)相當(dāng)于 window.checkThis(),因此,此時(shí)checkThis函數(shù)體內(nèi)的this關(guān)鍵字的指向變成了window對(duì)象,而又因?yàn)閣indow對(duì)象又一個(gè)x屬性('this is a property of window'),所以會(huì)彈出 'this is a property of window'。

 

上面的兩個(gè)示例都是比較容易理解的,因?yàn)橹灰袛喑霎?dāng)前函數(shù)是作為哪個(gè)對(duì)象的方法調(diào)用(被哪個(gè)對(duì)象調(diào)用)的,就可以很容易的判斷出當(dāng)前this變量的指向。

 

this.x 與 apply()、call()

通過call和apply可以重新定義函數(shù)的執(zhí)行環(huán)境,即this的指向,這對(duì)于一些應(yīng)用當(dāng)中是十分常用的。

示例三:call()

 

function changeStyle( type , value ){

    this.style[ type ] = value;

}

var one = document.getElementByIdx( 'one' ); 

changeStyle.call( one , 'fontSize' , '100px' );

changeStyle('fontSize' , '300px');  //出現(xiàn)錯(cuò)誤,因?yàn)榇藭r(shí)changeStyle中this引用的是window對(duì)象,而window并無style屬性。

注意changeStyle.call()中有三個(gè)參數(shù),第一個(gè)參數(shù)用于指定該函數(shù)將被哪個(gè)對(duì)象所調(diào)用。這里指定了one,也就意味著,changeStyle函數(shù)將被one調(diào)用,因此函數(shù)體內(nèi)this指向是one對(duì)象。而第二個(gè)和第三個(gè)參數(shù)對(duì)應(yīng)的是changeStyle函數(shù)里的type和value兩個(gè)形參。最總我們看到的效果是Dom元素one的字體變成了20px。

示例四:apply()

 

 

function changeStyle( type , value ){

    this.style[ type ] = value;

}

var one = document.getElementByIdx( 'one' ); 

changeStyle.apply( one , ['fontSize' , '100px' ]);

changeStyle('fontSize' , '300px');  //出現(xiàn)錯(cuò)誤,原因同示例三

 

apply的用法和call大致相同,只有一點(diǎn)區(qū)別,apply只接受兩個(gè)參數(shù),第一個(gè)參數(shù)和call相同,第二個(gè)參數(shù)必須是一個(gè)數(shù)組,數(shù)組中的元素對(duì)應(yīng)的就是函數(shù)的形參。

 

無意義(詭異)的this用處

示例五:

var obj = {

    x : 100,

    y : function(){

        setTimeout(

            function(){ alert(this.x); }    //這里的this指向的是window對(duì)象,并不是我們期待的obj,所以會(huì)彈出undefined

         , 2000);

    }

};

obj.y();

如何達(dá)到預(yù)期的效果

var obj = {

    x : 100,

    y : function(){

        var that = this;

        setTimeout(

            function(){ alert(that.x); }

         , 2000);

    }

};

obj.y();    //彈出100

 

事件監(jiān)聽函數(shù)中的this

var one = document.getElementByIdx( 'one' );

one.onclick = function(){

    alert( this.innerHTML );    //this指向的是one元素,這點(diǎn)十分簡(jiǎn)單..

};

 

注意:js中的全局變量都會(huì)動(dòng)態(tài)添加到Window 的實(shí)例 window,作為其屬性。

來源:百度文庫(kù)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高級(jí)JScript
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服