首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hotkeys.js中的理解函数

hotkeys.js中的理解函数
EN

Stack Overflow用户
提问于 2015-04-06 14:15:11
回答 1查看 44关注 0票数 1

我正在尝试创建一个类似于hotkeys.js的插件。

现在,我正在浏览源代码,并看到了以下代码:

代码语言:javascript
复制
jQuery.each(["keydown", "keyup", "keypress"], function() {
  jQuery.event.special[this] = {
    add: keyHandler
  };
});

在每个函数之后,我真的不明白这部分:

代码语言:javascript
复制
jQuery.event.special[this] = {
  add: keyHandler
};

这部分在做什么?在JS中,这种构造是什么?我习惯于在JS中看到嵌套的对象文本,但并不完全适应它们。另外,我知道现在JS使用了大量的对象文本来传递参数。

有人能解释一下上面的语法并告诉我它在做什么吗?

Github上也可以找到确切的行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-06 14:25:04

第一

代码语言:javascript
复制
jQuery.each(["keydown", "keyup", "keypress"], function() {

迭代数组["keydown", "keyup", "keypress"]。它的处理程序被调用3次(因为数组中有3项),函数中的this分别是"keydown""keyup""keypress"

所以

代码语言:javascript
复制
jQuery.event.special[this] = {
  add: keyHandler
};

只需将对象({ add: keyHandler })添加到jQuery.event.special对象中,其中键为"keydown""keyup""keypress"

因此,jQuery.event.special对象将这样处理:

代码语言:javascript
复制
jQuery.event.special == {
  "keydown" : {...},
  "keyup" : {...},
  "keypress" : {...},
  ....
}

someObject["childName"]表示法与someObject.childName相同。但是首先允许您从某个变量(在您的例子中是this)中读取选项名,因此使用了[]

jQuery.event.special[this]可以重写为jQuery["event"]["special"][this]

代码语言:javascript
复制
{
  add: keyHandler
}

add是一个关键。keyHandler是一个函数变量。在本例中,省略了键的引号,这也是正确的语法。与:

代码语言:javascript
复制
{
  "add" : keyHandler
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29473051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档