Эта область в функции стрелки в Javascript

Насколько я понимаю, стрелочная функция должна иметь ту же область видимости, что и контекст, в котором она была создана. Как показано ниже, один ответ: «Это большой зеленый ящик с номером», что я понимаю.

let box6 = {
    color:'green',
    position:1,
    font:'big',
    clickMe:function(){
    return ()=>{
    let str='This is the box number '+this.color+' '+ this.font;
    console.info(str)
    }  }
    }

но в классе React функция стрелки handleClick определена в классе LoggingButton, предполагается, что у нее такая же область видимости, но в консоли она возвращает: это LoggingButton, я думал, что она должна возвращать глобальную область или любую другую область на один уровень выше, чем LoggingButton. почему это происходит? Большое Вам спасибо!!!

class LoggingButton extends Component {
  handleClick=()=>{
    console.info('this is :', this)
  }
  render() {
    return (
      <div className = "App">
       <button onClick = {this.handleClick}>Click Me</button>
      </div>
    );
  }
}

Синтаксис handleClick = … может вас сбить с толку. Это действительно происходит в конструкторе.

Bergi 17.12.2018 22:32

Если бы handleClick был обычной функцией, объем this находился бы в пределах handleClick. «На уровень выше» - это LoggingButton.

wdm 17.12.2018 23:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
82
1

Ответы 1

Все очень просто.

()=>{} такой же, как function(){}.bind(this). А это в вашем случае LoggingButton.

Пожалуйста, дайте мне знать, если это поможет.

Это не правильно. Стрелочные функции вообще не связывают this

Andrew Li 17.12.2018 22:55

Затем скажите, что он делает. Вы говорите, что я неправ, не высказывая своей точки зрения. Это мерзко.

Andrey Ruzhentsev 17.12.2018 23:08

Я видел это. Но знаете ли вы, что результат будет таким же, если вы привяжете это или примените функцию стрелки?

Andrey Ruzhentsev 18.12.2018 07:29

Другие вопросы по теме