国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

詳解js和jquery里的this關(guān)鍵字

LoftySoul / 1768人閱讀

摘要:出于這個原因,該函數(shù)返回的,所以在這里指的是,所以返回的是第一個說明關(guān)鍵字通常在對象的構(gòu)造函數(shù)中使用,用來引用對象。重寫無法重寫,因為它是一個關(guān)鍵字。結(jié)論,表示當前的上下文對象是一個對象,可以調(diào)用對象所擁有的屬性,方法。

《javaScript語言精粹》這本書中,把 this 出現(xiàn)的場景分為四類,簡單的說就是:

有對象就指向調(diào)用對象
沒調(diào)用對象就指向全局對象
用new構(gòu)造就指向新對象
通過 apply 或 call 或 bind 來改變 this 的所指。

函數(shù)調(diào)用模式中,thiswindow;方法調(diào)用模式中,this為方法所屬的對象;構(gòu)造器調(diào)用模式中,this為創(chuàng)建的新對象。

js中的this

我們要記住:this永遠指向函數(shù)運行時所在的對象!而不是函數(shù)被創(chuàng)建時所在的對象。
this對象是在運行時基于函數(shù)的執(zhí)行環(huán)境綁定的,在全局環(huán)境中,this等于window

先來看個例子:


getFullname被分配到test變量時,上下文指的是全局對象(window)。這是因為test是被隱式設(shè)置為全局對象的屬性。出于這個原因,該函數(shù)返回windowfullname,所以在這里 this 指的是window, 所以返回的是第一個fullname

說明

this 關(guān)鍵字通常在對象的 構(gòu)造函數(shù)中使用,用來引用對象。

關(guān)鍵字this:總是指向調(diào)用該方法的對象,如:

var iCar = new Object();
iCar.color = "red";
iCar.showColor = function(){
     alert(this.color);//輸出"red"
};

關(guān)鍵字this用在對象的showColor()方法中,在此環(huán)境,this等于iCar

使用this是因為在實例化對象時,總是不能確定開發(fā)者會使用什么樣的變量名。使用this,即可在任意多個地方重用同一個函數(shù)。考慮下面的例子:

function showColor(){
     alert(this.color);
}
var oCar1 = new Object;
oCar1.color = "red";
oCar1.showColor = showColor;

var oCar2 = new Object;
oCar2.color = "blue";
oCar2.showcolor = showcolor;

oCar1.showColor();//輸出"red"
oCar2.showColor();//輸出"blue"

這段代碼中,首先用this定義函數(shù)showColor(),然后創(chuàng)建兩個對象oCar1oCar2,一個對象屬性被設(shè)置為"red",另一個為blue;兩個對象都被賦予了屬性showColor,指向原始的showColor()函數(shù),調(diào)用每個showColor的方法,oCar1輸出redoCar2輸出blue

引用對象屬性時,必須使用this關(guān)鍵字。

所有基于全局作用域的變量其實都是window對象的屬性(property)。這意味著即使是在全局上下文中,this變量也能指向一個對象。

對于 JScript 的客戶版本,如果在其他所有對象的上下文之外使用 this,則它指的是 window 對象。
例如:


    
    
    


    


作為構(gòu)造函數(shù)調(diào)用

所謂構(gòu)造函數(shù),就是通過這個函數(shù)生成一個新對象(object)。這時,this就指這個新對象。


全局環(huán)境中的this

在看下面一個this出現(xiàn)在全局環(huán)境中的例子:


函數(shù)getName()所處的對象是window對象,因此this也一定在window對象中。此時的this指向window對象,所以getName()返回的this.name其實是window.name,因此alert全局

結(jié)論:無論this身處何處,一定要找到函數(shù)運行時(或者說在何處被調(diào)用 了)的位置。

通過不同的調(diào)用語法,改變相同函數(shù)內(nèi)部this的值:


局部環(huán)境中的this

看下面一個this出現(xiàn)在局部環(huán)境中的例子

其中this身處的函數(shù)getName不是在全局環(huán)境中,而是處在jubu環(huán)境中。無論this身處何處,一定要找到函數(shù)運行時的位置。此時函數(shù)getName運行時的位置:

alert(jubu.getName());

顯然,函數(shù)getName所在的對象是jubu,因此this的安身之處定然在jubu,即指向jubu對象,則getName返回的this.name其實是jubu.name,因此alert出來的是“局部”!

作用域鏈中的this

因為scoping函數(shù)屬于window對象,自然作用域鏈中的函數(shù)也屬于window對象。

對象中的this

可以在對象的任何方法中使用this來訪問該對象的屬性。這與用new得到的實例是不一樣的。

var obj = {
    foo: "test",
    bar: function () {
        console.log(this.foo);
    }
};

obj.bar(); // "test"
重寫this

無法重寫this,因為它是一個關(guān)鍵字。

function test () {
    var this = {};  // Uncaught SyntaxError: Unexpected token this 
}
apply 和 call 調(diào)用以及 bind 綁定

applycall 調(diào)用以及 bind 綁定都是指向綁定的對象,


jquery中的this

$()生成的是什么呢?實際上$()=jquery(),那么也就是說返回的是一個jquery的對象。
$(this)jquery對象,能調(diào)用jquery的方法,例如click(), keyup()

 $(function () {
   $("button").click(function () {
       alert(this);//this 表示原生的DOM
       //$(this)表示當前對象,這里指的是button
   }) 
});

在許多情況下JQuerythis都指向HTML元素節(jié)點。

結(jié)論:
this,表示當前的上下文對象是一個html DOM對象,可以調(diào)用html對象所擁有的屬性,方法。
$(this),代表的上下文對象是一個jquery的上下文對象,可以調(diào)用jquery的方法和屬性值。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87624.html

相關(guān)文章

  • 【連載】前端個人文章整理-從基礎(chǔ)到入門

    摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...

    madthumb 評論0 收藏0
  • Ajax詳解

    摘要:當請求完成后注冊一個回調(diào)函數(shù)。該請求是否觸發(fā)全局處理事件如等,請求發(fā)送前的回調(diào)函數(shù),用來修改請求發(fā)送前,此功能可用來設(shè)置自定義頭信息,在函數(shù)中返回將取消這個請求。例如,為請求指定一個回調(diào)函數(shù)名。即改變回調(diào)函數(shù)的,默認就是傳入的整個對象。 Ajax Ajax 全稱是 asynchronous javascript and xml,并不是新的編程語言,可以說是已有技術(shù)的組合,主要用來實現(xiàn)客...

    jokester 評論0 收藏0
  • 詳解1000+項目數(shù)據(jù)分析出來的10大JavaScript錯誤

    摘要:當未捕獲的錯誤通過處理程序引發(fā)的錯誤,而不是捕獲在中被瀏覽器的跨域策略限制時,會產(chǎn)生這類的腳本錯誤。例如,如果您將您的代碼托管在上,則任何未被捕獲的錯誤將被報告為腳本錯誤而不是包含有用的堆棧信息。 譯者按: null/undefined引發(fā)的錯誤在10大錯誤中比例很高。而它們很可能導(dǎo)致嚴重問題,所以要重視起來。 原文: Top 10 JavaScript errors from 10...

    jubincn 評論0 收藏0
  • 前端基礎(chǔ)進階(十五):詳解 ES6 Modules

    摘要:下載地址安裝一個好用的命令行工具在環(huán)境下,系統(tǒng)默認的非常難用,所以我個人比較推薦大家使用或者。下載地址安裝在命令行工具中使用查看版本的方式確保與都安裝好之后,我們就可以安裝了。前端基礎(chǔ)進階系列目錄 showImg(https://segmentfault.com/img/remote/1460000009654403?w=1240&h=272); 對于新人朋友來說,想要自己去搞定一個E...

    Lowky 評論0 收藏0

發(fā)表評論

0條評論

LoftySoul

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<