我正在尝试创建一个类似于hotkeys.js的插件。
现在,我正在浏览源代码,并看到了以下代码:
jQuery.each(["keydown", "keyup", "keypress"], function() {
jQuery.event.special[this] = {
add: keyHandler
};
});在每个函数之后,我真的不明白这部分:
jQuery.event.special[this] = {
add: keyHandler
};这部分在做什么?在JS中,这种构造是什么?我习惯于在JS中看到嵌套的对象文本,但并不完全适应它们。另外,我知道现在JS使用了大量的对象文本来传递参数。
有人能解释一下上面的语法并告诉我它在做什么吗?
在Github上也可以找到确切的行。
发布于 2015-04-06 14:25:04
第一
jQuery.each(["keydown", "keyup", "keypress"], function() {迭代数组["keydown", "keyup", "keypress"]。它的处理程序被调用3次(因为数组中有3项),函数中的this分别是"keydown"、"keyup"和"keypress"。
所以
jQuery.event.special[this] = {
add: keyHandler
};只需将对象({ add: keyHandler })添加到jQuery.event.special对象中,其中键为"keydown"、"keyup"和"keypress"。
因此,jQuery.event.special对象将这样处理:
jQuery.event.special == {
"keydown" : {...},
"keyup" : {...},
"keypress" : {...},
....
}someObject["childName"]表示法与someObject.childName相同。但是首先允许您从某个变量(在您的例子中是this)中读取选项名,因此使用了[]。
jQuery.event.special[this]可以重写为jQuery["event"]["special"][this]
{
add: keyHandler
}add是一个关键。keyHandler是一个函数变量。在本例中,省略了键的引号,这也是正确的语法。与:
{
"add" : keyHandler
}https://stackoverflow.com/questions/29473051
复制相似问题