Передайте аргумент анонимной функции

Я пытаюсь понять объем этой обернутой функции.

  componentWillMount = () => {
    //-----------------------
    // props accesible here:
    //-----------------------
    console.info(this.props);
    $(function() {
      var jqconsole = $('#console').jqconsole('Welcome to the console!\n', '>');
      jqconsole.Write(
        //-----------------------
        // props inaccesible here:
        //-----------------------
        this.getMessagesFromJavascriptWindow(this.props.code) + '\n',
        'jqconsole-output'
      );
      var startPrompt = function() {
        // Start the prompt with history enabled.
        jqconsole.Prompt(true, function(input) {
          let transformedString;
          try {
            transformedString = eval(input);
            // Output input with the class jqconsole-output.
            jqconsole.Write(transformedString + '\n', 'jqconsole-output');
            // Restart the input prompt.
            startPrompt();
          } catch (error) {
            jqconsole.Write(error + '\n', 'jqconsole-output-error');
            // Restart the input prompt.
            startPrompt();
          }
        });
      };
      // Restart the input prompt.
      startPrompt();
    });
  };

Я новичок в JQuery. Мне нужно передать аргумент этой анонимной функции при использовании оболочки JQuery. Может кто-нибудь объяснить это или показать мне соответствующие документы? Я не нашел.

редактировать:

Для некоторого контекста: то, что я делаю, происходит в методе componentWillMount компонентов React. И я пытаюсь получить доступ к реквизиту.

"тест здесь недоступен" - Ты уверен в этом? jsfiddle.net/65j82he3
David 22.08.2018 14:04

я внес некоторые правки @David

Spacemoose 22.08.2018 14:08

это доступно. const test = 5; $ (функция () {console.info (тест);});

Deepak Kumar 22.08.2018 14:08

мои правки действительно плохие, извините

Spacemoose 22.08.2018 14:09

@Spacemoose: Вы можете привести примеры проблемы с полный и очевидный? Что такое this? Что такое props? Что вы пытаетесь достичь?

David 22.08.2018 14:11

почему все так торопятся с голосованием против и закрытием? Печальный. Я сделаю все возможное, чтобы обновить свой пост соответствующим образом через секунду.

Spacemoose 22.08.2018 14:13
Поведение ключевого слова "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
6
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Убедитесь, что контекст, в котором вы вызываете свою функцию, знает о тесте, иначе вы, очевидно, не сможете передать то, чего не знаете.

Затем действуйте так:

var self = this;
$(function( self ){ can access this.props here via self.props })

Вы всегда можете передавать параметры анонимным функциям, но контекст, в котором вы их вызываете, должен знать об этих параметрах. Так же и работает deferred:

/** define in some context */
var dfd = $.Deferred();
dfd.resolve( 5 );

/** define in some other context, that knows of the dfd above */
dfd.done( function ( param ) { console.info( param ); });

// result: 5

Что касается вашего редактирования:

var self = this; // before calling the anonymous function

Затем используйте

self.props

в анонимной функции.

Обновлено: Я думаю, что в вашем случае вам даже не нужно передавать какие-либо параметры. Все, что вам нужно, это позаботиться о this. В случае сомнений сохраните контекст в переменной.

Я обновил свой пост полным примером кода FYI.

Spacemoose 22.08.2018 14:16

Для расширения: dfd.resolve( 5 ); может даже быть вызван снова в каком-то третьем контексте, анонимная функция все равно получит 5 в качестве входного параметра. Этот отложенный пример демонстрирует использование анонимной функции, поэтому вы видите, как параметры могут быть переданы различным функциям в разных контекстах.

Koenigsberg 22.08.2018 14:17

Спасибо за ваши усилия. Я прочитаю это и посмотрю, понимаю ли я.

Spacemoose 22.08.2018 14:19

Я добавил некоторые дополнения после репликации вашей обновленной проблемы, см. EDIT в моем сообщении.

Koenigsberg 22.08.2018 14:31

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