我对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)
答案 0 :(得分:0)
根据您所说的“名称”的含义,该函数要么没有名称(它是 anonymous ),但这是根据语言定义的严格含义;否则,通俗地说,“名称”就是为其分配属性的名称。
使用俗称的问题是,名称是属性名称,这可能导致对匿名函数与该属性所在对象之间关系的错误假设。实际上,没有永久关系;匿名函数没有与任何“父”对象的任何隐式关联。
在您的情况下,您不太可能希望直接 调用该函数。它被设置为事件处理程序,这意味着运行时或某些框架将在适当的时间调用您的函数。通常,如果对象属性引用了一个函数,则可以通过该属性调用该函数:
var someObject = {
someFunction: function() { alert("Hi!"); }
};
someObject.someFunction(); // alerts "Hi!"