鍍金池/ 問(wèn)答/HTML5  HTML/ react-native里關(guān)于this的一個(gè)問(wèn)題

react-native里關(guān)于this的一個(gè)問(wèn)題

clipboard.png

為了方便截圖,我把多余的代碼省掉了
初學(xué)react-native,問(wèn)題如下:

我知道圖中畫(huà)圈的這兩個(gè)this都是指向的LoginForm實(shí)例,但是為什么要加這個(gè)this呢?

function foo1(){
    console.log('sssss');
}

function foo2(){
    this.foo1();
}

foo2();

---------------

function foo1(){
    console.log('sssss');
}

function foo2(){
    foo1();
}

foo2();

就像上面兩端代碼一樣,無(wú)論加不加this都沒(méi)有影響函數(shù)的調(diào)用。
所以我覺(jué)得不用加this,render()函數(shù)都可以在里面調(diào)用renderButton()函數(shù)????

回答
編輯回答
夢(mèng)一場(chǎng)
當(dāng)一個(gè)對(duì)象調(diào)用靜態(tài)或原型方法時(shí),如果該對(duì)象沒(méi)有“this”值(或“this”作為布爾,字符串,數(shù)字,未定義或null)
,那么“this”值在被調(diào)用的函數(shù)內(nèi)部將為
undefined。不會(huì)發(fā)生自動(dòng)包裝。即使我們以非嚴(yán)格模式編寫(xiě)代碼,它的行為也是一樣的,因?yàn)樗械暮瘮?shù)、方法、構(gòu)造函數(shù)、getters或setters都在嚴(yán)格模式下執(zhí)行。因此如果我們沒(méi)有指定this的值,this值將為undefined。

class 內(nèi)部的所有方法都是默認(rèn)的嚴(yán)格模式,默認(rèn)的this不是window(不存在class的時(shí)候),而是undefined,所以必須要手動(dòng)制定this,手動(dòng)綁定。

2018年8月27日 18:31
編輯回答
神經(jīng)質(zhì)

因?yàn)檫@是在一個(gè) class 里,不加 this 調(diào)不到
下面那段代碼則不是

2017年1月9日 20:59