亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

this

teren / 3571人閱讀

摘要:在中一共有四種調(diào)用模式方法調(diào)用模式函數(shù)調(diào)用模式構(gòu)造器調(diào)用函數(shù)和調(diào)用模式。以此模式調(diào)用函數(shù)時(shí),會被綁定到全局變量,也就是對象。當(dāng)然這樣的構(gòu)造器函數(shù)形式我們并不常用。方法讓我們構(gòu)建一個(gè)參數(shù)數(shù)組傳遞給調(diào)用函數(shù),同時(shí)它也允許我們選擇的值。

this

this在面向?qū)ο缶幊踢^程中非常重要,它的值取決于調(diào)用模式。

在js中一共有四種調(diào)用模式:_方法調(diào)用模式、函數(shù)調(diào)用模式、構(gòu)造器調(diào)用函數(shù)和apply調(diào)用模式_。這四種模式在初始化參數(shù)this上是存在著差異的。

方法調(diào)用模式

當(dāng)函數(shù)被保存為對象的一個(gè)屬性,我們稱之為它的一個(gè)方法。

方法調(diào)用模式定義:調(diào)用表達(dá)式包含一個(gè)提取屬性的動作(即包含一個(gè).點(diǎn)表達(dá)式或者[]下標(biāo)表達(dá)式),那么它就是當(dāng)作一個(gè)方法來調(diào)用。

看個(gè)簡單的例子:

var name = "window";   
var xiaoming = {
    name: "xiaoming",
    lastname:"wang",
    saylastname:function(){
        console.log(this.lastname)
    }
};
console.log(xiaoming.saylastname()); //wang

方法是可以使用this訪問自己所屬的對象。this對對象的綁定是發(fā)生在調(diào)用的時(shí)候!(強(qiáng)調(diào))是發(fā)生調(diào)用的時(shí)候。

這樣通過this取得他們所屬對象的上下文的方法也稱之為公共方法。

函數(shù)調(diào)用模式

函數(shù)調(diào)用模式定義:當(dāng)一個(gè)函數(shù)并非一個(gè)對象的屬性時(shí),那么它就是被當(dāng)作一個(gè)函數(shù)來調(diào)用的。以此模式調(diào)用函數(shù)時(shí),this會被綁定到全局變量,也就是window對象。需要??的是,在嚴(yán)格模式下,this的值為undefined。

延續(xù)上個(gè)模式的例子:

var a = xiaoming.saylastname;
a();  //window

這個(gè)例子最好的說明:函數(shù)調(diào)用并非一個(gè)對象的屬性,就被當(dāng)作一個(gè)函數(shù)來調(diào)用。

構(gòu)造器函數(shù)

構(gòu)造器調(diào)用模式定義:如果創(chuàng)建的目的就是i 希望結(jié)合new關(guān)鍵字前綴來調(diào)用,那它就被稱為構(gòu)造器函數(shù)。

如果在一個(gè)函數(shù)前面帶上new來調(diào)用,那么就會創(chuàng)建一個(gè)鏈接到該函數(shù)的prototype成員的新對象,同時(shí)也會被綁定到哪個(gè)欣對象上。

看這個(gè)例子:

var Person = function(Name){
        this.name = Name;
    };
//給person的所有對象提供一個(gè)公共方法
Person.prototype.say = function(){
    return this.name;
};
//構(gòu)造一個(gè)person實(shí)例
var xiaoming = new Person("xiaoming");  
console.log(xiaoming.say()); //xiaoming

在構(gòu)造區(qū)函數(shù)中,通常會以大寫約定,這樣它們會保存在以大寫格式命名的變量中。這樣的約定會得意更加容易區(qū)分這是構(gòu)造器函數(shù)變量。

?? 當(dāng)然這樣的構(gòu)造器函數(shù)形式我們并不常用。之后我也會介紹更好的替代方式。

apply調(diào)用模式

apply調(diào)用模式定義:函數(shù)可以擁有方法。apply方法讓我們構(gòu)建一個(gè)參數(shù)數(shù)組傳遞給調(diào)用函數(shù),同時(shí)它也允許我們選擇this的值。

簡單的說就時(shí)綁定this指向的對象。

apply可以接收2個(gè)參數(shù),參數(shù)1:要綁定給this的值;參數(shù)2:數(shù)組參數(shù)。

看兩個(gè)例子:

var add = function(num1,num2){
    return num1 +num2;
}
var arr = [4,5];
var sum = add.apply(null,arr);
console.log(sum); //9

var xiaohong = {
    name:"xiaohong"
}
var xiaohongname = Person.prototype.say.apply(xiaohong);
console.log(xiaohongname); //xiaohong

第一個(gè)例子:是最典型的aplly方法的使用。

第二個(gè)例子中本身小紅對象沒有say方法,但是我們可以通過apply方法將say方法傳遞給調(diào)用對象,也可以說綁定給指定的對象,而this也指向這個(gè)對象。

總結(jié)

所以說我們應(yīng)該牢牢記住this的值取決于調(diào)用的模式。這樣才會讓我們了解初始化參數(shù)this存在的差異。

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/94964.html

相關(guān)文章

  • node那點(diǎn)事(一) -- Readable streams(可讀流)

    摘要:流的類型中有四種基本的流類型可讀的流例如可寫的流例如可讀寫的流例如在讀寫過程中可以修改和變換數(shù)據(jù)的流例如可讀流可讀流有兩種模式流動模式可讀流自動讀取數(shù)據(jù),通過接口的事件盡快將數(shù)據(jù)提供給應(yīng)用。 流的簡介 流(stream)在 Node.js 中是處理流數(shù)據(jù)的抽象接口(abstract interface)。 stream 模塊提供了基礎(chǔ)的 API 。使用這些 API 可以很容易地來構(gòu)建實(shí)...

    rickchen 評論0 收藏0
  • 原生js實(shí)現(xiàn)移動端+pc端 輪播插件

    摘要:原生寫的輪播兼容移動端插件,支持輪播速度,輪播內(nèi)容,輪播間隔,手勢靈敏度自定義,導(dǎo)航圓點(diǎn)點(diǎn)擊跳轉(zhuǎn)手勢滑動。使用說明文件包含小部分語法編寫的文件,在移動端有兼容性問題,僅供于源碼參考。移動端跟端開發(fā)引用文件直接下載進(jìn)行引入使用。 slide.js 原生js寫的輪播兼容 pc+移動端 插件,支持輪播速度,輪播內(nèi)容,輪播間隔,手勢靈敏度自定義,導(dǎo)航圓點(diǎn)點(diǎn)擊跳轉(zhuǎn),手勢滑動。 使用說明:sli...

    leanxi 評論0 收藏0
  • 手把手教你用原生JavaScript造輪子(2)——輪播圖(更新:ES6版本)

    摘要:綁定輪播事件然后是鼠標(biāo)移入移出事件的綁定鼠標(biāo)移入移出事件移入時(shí)停止輪播播放的定時(shí)器,移出后自動開始下一張的播放。 通過上一篇文章的學(xué)習(xí),我們基本掌握了一個(gè)輪子的封裝和開發(fā)流程。那么這次將帶大家開發(fā)一個(gè)更有難度的項(xiàng)目——輪播圖,希望能進(jìn)一步加深大家對于面向?qū)ο蟛寮_發(fā)的理解和認(rèn)識。 So, Lets begin! 目前項(xiàng)目使用 ES5及UMD 規(guī)范封裝,所以在前端暫時(shí)只支持標(biāo)簽的引入方式...

    jasperyang 評論0 收藏0
  • 基本數(shù)據(jù)結(jié)構(gòu)和查找算法

    摘要:本文包括簡單的數(shù)據(jù)結(jié)構(gòu)和查找算法,屬于個(gè)人整理。初學(xué)編程可以用這里的東西聯(lián)系一下,看一看也挺有意思博主個(gè)人不認(rèn)為中算法數(shù)據(jù)結(jié)構(gòu)不重要,畢竟這是程序開發(fā)的基本功。 本文包括簡單的數(shù)據(jù)結(jié)構(gòu)和查找算法,屬于個(gè)人整理。初學(xué)編程可以用這里的東西聯(lián)系一下,看一看也挺有意思博主個(gè)人不認(rèn)為js中算法數(shù)據(jù)結(jié)構(gòu)不重要,畢竟這是程序開發(fā)的基本功。本文還會根據(jù)博主學(xué)習(xí)進(jìn)展和時(shí)間安排不定期更新 數(shù)據(jù)結(jié)構(gòu)部分 列...

    姘擱『 評論0 收藏0
  • ionic 2+ 手勢解鎖界面

    摘要:手勢解鎖界面一些對安全要求比較高的少不了鎖屏頁面,而手勢解鎖對于用戶來說使用方便,對于程序員來說小有挑戰(zhàn),怎么有棄之不用的道理。 ionic 2+ 手勢解鎖界面 一些對安全要求比較高的app少不了鎖屏頁面,而手勢解鎖對于用戶來說使用方便,對于程序員來說小有挑戰(zhàn),怎么有棄之不用的道理。 效果圖 效果圖處理短,方便大家閱讀showImg(https://segmentfault.co...

    Hancock_Xu 評論0 收藏0

發(fā)表評論

0條評論

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