Вопрос о формате функции в JavaScript - PullRequest
0 голосов
/ 19 февраля 2019

Я довольно новичок в JavaScript и работаю с библиотекой JavaScript datePicker.Я в значительной степени использую код из коробки, и функция, которая читает текущую выбранную дату, меня немного смущает.Вот код (который я немного изменил, чтобы отформатировать дату - чтобы сопоставить строку с датами моего набора данных).

const picker = datepicker(document.querySelector('#inlineDatepicker'), {

  // Event callbacks.
  onSelect: function(instance) {
  console.log(instance)
  var instanceSplit = instance.dateSelected.toString().split(" " ,4)
  var instanceClean = instanceSplit.toString().replace(/,/g, ' ')
    if (instanceClean === 'Mon Feb 11 2019') {
            console.log('datematch!')
            return 'blue'
        }       
      },
   });

Я не знаком с форматом функции onSelect: function(instance) {}.Все функции, которые я когда-либо видел, написаны в следующем формате: function someFunction(parameter) {}.

Что приводит меня к моему вопросу: каково действительное имя функции onSelect: function(instance) {}?Например, если я хочу изменить внешний вид моих данных на основе выбранной даты - т.е. вернуть штрих «синий» на мои точки данных - какое имя функции я вызываю?Например, код здесь пытается передать возвращенное значение штриха в вышеупомянутой функции, но он не распознает onSelect как функцию (говорит, что она не определена):

var events = mapG.selectAll("circle")
    .data(allSFEvents)
    .enter().append("circle")
    .style("stroke", onSelect)

1 Ответ

0 голосов
/ 19 февраля 2019

В зависимости от того, что вы подразумеваете под «именем», эта функция либо не имеет имени (это анонимно ), что является строгим значением согласно определению языка;или «имя» в разговорном выражении - это имя свойства, которому оно присвоено.

Проблема с разговорным значением, что имя является именем свойства, заключается в том, что оно может привести к ложным предположениям оотношения между анонимной функцией и объектом, где живет это свойство.На самом деле нет постоянных отношений;анонимная функция свободна от любой неявной ассоциации с любым «родительским» объектом.

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

var someObject = {
  someFunction: function() { alert("Hi!"); }
};

someObject.someFunction(); // alerts "Hi!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...