成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

this關(guān)鍵字

oliverhuang / 1899人閱讀

摘要:關(guān)鍵字關(guān)鍵字是什么關(guān)鍵字是中最復(fù)雜的機(jī)制之一。它是一個(gè)很特別的關(guān)鍵字,被定義在所有函數(shù)的作用域中??梢园堰@條規(guī)則看作是無(wú)法應(yīng)用其他規(guī)則時(shí)的默認(rèn)規(guī)則。取決于函數(shù)調(diào)用的位置注意事項(xiàng)避免多層避免數(shù)組方法中的避免回調(diào)函數(shù)中的

this關(guān)鍵字 this關(guān)鍵字是什么

this關(guān)鍵字是JavaScript中最復(fù)雜的機(jī)制之一。它是一個(gè)很特別的關(guān)鍵字,被定義在所有函數(shù)的作用域中。但是即使是非常有經(jīng)驗(yàn)的JavaScript開(kāi)發(fā)者也很難說(shuō)清它到底指向什么。
1.this被定義在所有函數(shù)的作用域中
2.this指向哪個(gè)對(duì)象不取決于this被定義在哪里,而是取決于調(diào)用的位置

//定義一個(gè)全局變量
var v = 10;
//this經(jīng)常被定義在函數(shù)的作用域中
function fn(){
    //this 總是要返回一個(gè)對(duì)象
    console .log(this . v);
}
fn();
綁定規(guī)則 默認(rèn)綁定

在一個(gè)函數(shù)體中使用this,當(dāng)該函數(shù)被獨(dú)立調(diào)用??梢园堰@條規(guī)則看作是無(wú)法應(yīng)用其他規(guī)則時(shí)的默認(rèn)規(guī)則。

function foo(){
   console .log(this .a);
}
var a=2;
foo();//2
隱式綁定

隱式綁定的規(guī)則需要考慮的是調(diào)用位置是否有上下文對(duì)象,或者說(shuō)是否被某個(gè)對(duì)象擁有或者包含。

function foo(){
    console .log(this.a);
}
var obj = {
  a:2,
  foo:foo
};
obj.foo();//2
隱式綁定丟失

隱式綁定丟失是最常見(jiàn)的this綁定問(wèn)題,指的就是被隱式綁定的函數(shù)會(huì)丟失綁定對(duì)象,也就是說(shuō)它會(huì)應(yīng)用默認(rèn)綁定,從而把this綁定到全局對(duì)象。

// 定義一個(gè)全局變量
var v = 100;
// 定義一個(gè)函數(shù)
function fn(){
    console.log(this.v);
}
// 定義一個(gè)對(duì)象
var obj = {
    v : 200,
    f : fn // 對(duì)象的f()方法指向fn()函數(shù)
}
// 定義一個(gè)全局變量,并被賦值為對(duì)象obj的f()方法
var fun = obj.f;
// 將fun作為一個(gè)函數(shù)進(jìn)行調(diào)用
fun();
顯示綁定

顯示綁定就是明確在調(diào)用時(shí),this所綁定的對(duì)象。JavaScript中提供了apply()方法和call()方法實(shí)現(xiàn),這兩個(gè)方法的第一個(gè)參數(shù)接收是一個(gè)對(duì)象,會(huì)把這個(gè)對(duì)象綁定到this,接著在調(diào)用函數(shù)時(shí)指定這個(gè)this

// 定義一個(gè)全局變量
var v = 100;
// 定義一個(gè)函數(shù)
function fn(){
    console.log(this.v);
}
// 定義一個(gè)對(duì)象
var obj = {
    v : 200,
    f : fn // 對(duì)象的f()方法指向fn()函數(shù)
}
// 定義一個(gè)全局變量,并被賦值為對(duì)象obj的f()方法
var fun = obj.f;
// 將fun作為一個(gè)函數(shù)進(jìn)行調(diào)用
fun.apply(obj);
new綁定

1.創(chuàng)建(或者說(shuō)構(gòu)造)一個(gè)全新的對(duì)象
2.這個(gè)新對(duì)象會(huì)綁定到函數(shù)調(diào)用的this
3.如果函數(shù)沒(méi)有返回其他對(duì)象,那么new表達(dá)式中的函數(shù)調(diào)用會(huì)自動(dòng)返回這個(gè)新對(duì)象。

function Hero(name){
    this.name = name;
}
// this取決于函數(shù)調(diào)用的位置
var hero1 = new Hero("hhh");

var hero2 = new Hero("xxx");
注意事項(xiàng)

1.避免多層this
2.避免數(shù)組方法中的this
3.避免回調(diào)函數(shù)中的this

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96986.html

相關(guān)文章

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

    摘要:出于這個(gè)原因,該函數(shù)返回的,所以在這里指的是,所以返回的是第一個(gè)說(shuō)明關(guān)鍵字通常在對(duì)象的構(gòu)造函數(shù)中使用,用來(lái)引用對(duì)象。重寫(xiě)無(wú)法重寫(xiě),因?yàn)樗且粋€(gè)關(guān)鍵字。結(jié)論,表示當(dāng)前的上下文對(duì)象是一個(gè)對(duì)象,可以調(diào)用對(duì)象所擁有的屬性,方法。 在《javaScript語(yǔ)言精粹》這本書(shū)中,把 this 出現(xiàn)的場(chǎng)景分為四類(lèi),簡(jiǎn)單的說(shuō)就是: 有對(duì)象就指向調(diào)用對(duì)象 沒(méi)調(diào)用對(duì)象就指向全局對(duì)象 用new構(gòu)造就指向新對(duì)...

    LoftySoul 評(píng)論0 收藏0
  • this關(guān)鍵字

    摘要:關(guān)鍵字關(guān)鍵字是什么關(guān)鍵字是中最復(fù)雜的機(jī)制之一。它是一個(gè)很特別的關(guān)鍵字,被定義在所有函數(shù)的作用域中??梢园堰@條規(guī)則看作是無(wú)法應(yīng)用其他規(guī)則時(shí)的默認(rèn)規(guī)則。取決于函數(shù)調(diào)用的位置注意事項(xiàng)避免多層避免數(shù)組方法中的避免回調(diào)函數(shù)中的 this關(guān)鍵字 this關(guān)鍵字是什么 this關(guān)鍵字是JavaScript中最復(fù)雜的機(jī)制之一。它是一個(gè)很特別的關(guān)鍵字,被定義在所有函數(shù)的作用域中。但是即使是非常有經(jīng)驗(yàn)的J...

    cucumber 評(píng)論0 收藏0
  • 如何理解JavaScript的this關(guān)鍵字

    摘要:原文鏈接參考深入理解原型和閉包完結(jié)王福朋博客園中的作用域詳解博客園 前言 王福朋老師的 JavaScript原型和閉包系列 文章看了不下三遍了,最為一個(gè)初學(xué)者,每次看的時(shí)候都會(huì)有一種 大徹大悟 的感覺(jué),而看完之后卻總是一臉懵逼。原型與閉包 可以說(shuō)是 JavaScirpt 中理解起來(lái)最難的部分了,當(dāng)然,我也只是了解到了一些皮毛,對(duì)于 JavaScript OOP 更是缺乏經(jīng)驗(yàn)。這里我想總...

    Yangder 評(píng)論0 收藏0
  • JS 中 this 關(guān)鍵字詳解

    摘要:首先,必須搞清楚在里面,函數(shù)的幾種調(diào)用方式普通函數(shù)調(diào)用作為方法來(lái)調(diào)用作為構(gòu)造函數(shù)來(lái)調(diào)用使用方法來(lái)調(diào)用方法箭頭函數(shù)但是不管函數(shù)是按哪種方法來(lái)調(diào)用的,請(qǐng)記住一點(diǎn)誰(shuí)調(diào)用這個(gè)函數(shù)或方法關(guān)鍵字就指向誰(shuí)。 本文主要解釋在JS里面this關(guān)鍵字的指向問(wèn)題(在瀏覽器環(huán)境下)。 首先,必須搞清楚在JS里面,函數(shù)的幾種調(diào)用方式: 普通函數(shù)調(diào)用 作為方法來(lái)調(diào)用 作為構(gòu)造函數(shù)來(lái)調(diào)用 使用apply/call...

    zoomdong 評(píng)論0 收藏0
  • 學(xué)習(xí)js中的'this'關(guān)鍵字

      在JavaScript中‘this’關(guān)鍵字是一個(gè)非常重要的概念,我們雖然知道它重要,但它也十分的晦澀難懂,也給我們學(xué)習(xí)造成不小的困擾。  什么是'this'關(guān)鍵字  'this'關(guān)鍵字是為每個(gè)執(zhí)行上下文(每個(gè)函數(shù))創(chuàng)建的一個(gè)特殊變量;所以一般來(lái)說(shuō),在使用'this'關(guān)鍵字的函數(shù)中,'this'永遠(yuǎn)是取其所有者的值??偨Y(jié)一句話是該函...

    3403771864 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<