Как можно использовать ключевое слово "this" внутри сигнатуры функции для установки параметра по умолчанию?


У меня есть функция, которая привязана к компоненту React:

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

    }

Я никогда не слышал о ключевом слове "this", используемом в сигнатуре функции в Javascript, и мне интересно, будет ли контекст "this" содержать объект или глобальную область видимости. Должна ли эта функция быть привязана к соответствующему контексту, прежде чем я смогу правильно использовать " это " в подписи?

2 4

2 ответа:

Мне интересно, будет ли контекст "this" содержать объект или глобальную область видимости.

Ни. Значения по умолчанию вычисляются не вне функции, а внутри вызова . Ключевое слово this будет указывать на то же значение, что и в теле метода-получателя вызова. Так что если функция была привязана к вашему компоненту react, то это и будет this.

Если функция находится в классе, расширяющем React.Класс компонента из библиотеки react. ключевое слово "this" относится к текущему объекту в контексте его класса. Например:

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

Как вы заметили, это.state-это свойство класса example, которое просто вызывается по второму аргументу, который возвращает значение свойства поля this.государственный объект.

Если вам интересно, выполнимо это или нет. Ну, JavaScript-это многопарадигмальный язык, и если он предназначен для его использования в функциональной парадигме это определенно может быть приемлемо.