2017-07-11 73 views
4

我有一個綁定到一個陣營組件的功能:如何使用函數簽名中的'this'關鍵字來設置默認參數?

functionName(param1, param2 = this.state.field) { 

    } 

我從來沒有聽說過「這個」關鍵詞的Javascript中的函數簽名中使用,我想知道如果「這個」上下文將是包含對象或全局範圍。在我可以在簽名內正確使用'this'之前,這個函數是否需要綁定到正確的上下文?

+0

你想將'this'上下文綁定到什麼?組件?功能?全局對象? – mhodges

+0

什麼都沒有。我只是試圖確定函數簽名中的上下文是否是包含對象的上下文(函數本身綁定的反應組件) –

回答

2

我想知道'this'的上下文是包含對象還是全局作用域。

都沒有。默認值不在函數外進行評估,但是inside the callthis關鍵字將指向它在方法主體中的相同值 - 呼叫的接收者。所以如果函數綁定到你的反應組件,這就是this

+0

啊,這是有道理的!我不知道默認值是在函數體內設置的。感謝您的知識。所以我猜如果函數沒有綁定任何東西,那麼這個上下文將是包含對象...除非函數是一個嵌套的未綁定函數 –

1

如果函數處於從反應庫擴展React.Component類的類中。 「this」關鍵字是指當前對象在其類中的上下文。例如:

import React from 'react'; 
class example extends React.Component { 
    this.state = { 
     field: "this variable!" 
    } 
    functionName(param1, param2 = this.state.field) { 
     console.log(param2); 
    } 
} 

當你觀察,this.state僅僅是被稱爲在第二個參數示例類的屬性,這將返回this.state對象的字段屬性的值。

如果你想知道它是否可行。那麼,JavaScript是一種多範式語言,如果打算將它用於功能範式,這絕對是可以接受的。

+1

我不確定是否同意使用「這個關鍵字被認爲是功能性的。 –

相關問題