引用-事件对象属性
reference - event object attributes
对于下面的代码,解释器如何知道事件具有. keycode属性?这段代码可以工作,我只是不完全理解为什么,更多的是这是文档。它如何知道对象事件的类型。如果我叫它e或者e1呢?方法原型f1(Event)记录在哪里?
function b0(event)
{if (event.keyCode==13)
{i4();
return false;}}
function o5('f4b_',b0);
o5(a,b){document.getElementById(a).onkeypress=b;}
其中元素id a是一个输入文本框
事件的名称无关紧要,在函数内部它只是另一个变量。您可以将其重命名为JellyMan,如果您将if (event.keyCode==13)
重命名为if (JellyMan.keyCode==13)
,它将正常工作。
事件的类型由脚本在运行时确定。解释器不知道事件具有。keycode属性-如果您尝试调用它,并传入一个不是正确类型的参数:b0('wheee, break it');
,那么它将失败。
当作者编写脚本时,他决定函数b0将接受一个参数(他称之为event),并且它将是一个eventHandler -这在任何地方都没有指定,只是假设没有人会用其他东西调用它。所有的eventandler都有一个. keycode属性,因此假定传入的对象也有一个。
解释器不需要"知道"。当运行时系统调用事件处理程序时,它传递给它一个具有或多或少记录良好的属性的对象。
如果你在一个传递奇怪事件对象的坏浏览器中运行该代码,代码将会失败。
请记住javascript是解释代码,而不是预编译代码。任何变量都可以保存任何类型
因此,在函数b0
中,第二行代码:
if (event.keyCode==13)
告诉解释器获取传递给函数(名为event
)的第一个参数,并从名为keyCode
的函数中获取属性。Javascript将查看事件参数,看看它是否是具有属性的正确变量类型,以及它是否实际上具有名为keyCode
的属性。如果是,它将获取它的值并与13比较。如果它不是具有任何属性的正确变量类型,那么这行代码将失败,javascript将抛出异常。如果它是具有属性的正确类型的变量,但没有名为keyCode
的属性,那么它将继续使用undefined
属性的值,该值将通过13的相等性测试。
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象