每个函数都有4个默认对象
arguments 保存着实际传入的参数,集合列表
return 有两个功能,打断函数和返回函数值
this 谁调用的函数,this就是谁
event 事件对象

事件

  box.onlick=function(){}
表示点击 box 触发了一个函数。
事件包含三点:
1 谁触发的
2 触发了什么事件
3 触发的事件执行了什么动作 焦点事件: 使浏览器能区分用户输入的对象。
当一个元素有焦点的时候可以接受用户输入。
不是所有元素都有焦点,能响应用户输入的才有焦点。
onfocus 当元素获得焦点时。
onblur 当元素失去焦点时。 文本域的空白符会被识别。
选中: obj.select();
obj 文本域 textarea ,支持 select ,但比如 p 标签不支持。

事件对象 event 对象

  当一个事件发生的时候和当前事件发生有关的详细信息,都会被临时保存在一个指定的地方。
event 对象,供我们需要时调用。像飞机的黑匣子。 当在页面上发生了某事件的时候,会被事件对象记录。
window.onclick=function(e){
  console.log(e) //MouseEvent {isTrusted: true…}
}
  事件对象的兼容处理
e=event||window.event;
ie/谷歌中: event 是一个内置的全局对象。
标准下: 事件对象是通过事件函数的第一个参数传入的。
window.onclick=function(e,f){
  //var f;
  console.log(f) //undefined
}
  没有事件发生:输出 undefined
console.log(window.event) //undefined
console.log(event) //undefined
  形式参数和实际参数
形式参数:
相当于在函数内定义一个局部变量。 如果一个函数是被事件调用的,这个函数定义的第一个参数就是事件对象。 arguments[0] 实际参数的第一个值。
window.onclick=function(e){
  console.log(arguments[0]) //MouseEvent {isTrusted: true, screenX: 1027…}
}
  没有事件调用时: fn(1,2) 输出3
function fn(a,b){
  console.log(a+b) //3
}
fn(1,2)
  有事件调用时: 还是输出3
function fn(a,b){
  console.log(this) //window
  //
  console.log(a+b) //3
}
window.onclick=function(){
  fn(1,2) //3
}
  clientX: number
clientY: number
当一件事件发生的时候,鼠标到页面的可视距离 onmousemove 当鼠标移动的时候
当鼠标在一个元素上移动的时候触发。触发频率不是像素,而是时间间隔。
在一个指定的时间内,如果鼠标位置和上次的位置发生变化,就会触发。 onmousedown 鼠标按下。
onmouseup 鼠标抬起。 onclick 是按下再抬起。 onmouseover 是鼠标移上时触发的事件。
onmouseout 是鼠标移出的时候触发事情。

事件冒泡

  当一个元素接收到事件的时候,会把接收的所有传递父级。一直到顶层的 window 对象。
<div id="d1">
  <div id="d2">
    <div id="d3"></div>
  </div>
</div>
  点击d3时会把事件传到d2、d1。如果大家都有点击事件时,点击d3,会相当于全部都点击了。
如果d1、d2没有点击事件时,其实点击事件也是冒泡到其身上的,只是没有执行。 阻止事件冒泡:
e.stopPropagation() //常用方式,标准浏览器。不支持ie
e.cancelBubble=true; //不支持ie
return false //不支持ie
window.cancelBubble=true; //谷歌、ie
  阻止事件冒泡兼容
e=event||window.event;
e.cancelBubble=true;
e.stopPropagation();
  例如:
box.onclick=function(ev){
  var e=ev||window.event;
    alert("我是box2");
    e.cancelBubble=true;
    e.stopPropagation();
}

默认事件

  浏览器本身会存在一些默认事件,比如鼠标右键的菜单。
阻止默认事件:
如果不阻止,点击鼠标右键时首先会弹出1,再弹右键菜单。
阻止后不弹出右键菜单。
document.oncontextmenu=function(ev){
      var e=ev||window.event;
      e.returnValue=false; //ie中
      e.preventDefault();
      alert(1)
}

键盘事件

  onkeydow 当按下键盘的时候。

js函数事件对象的更多相关文章

  1. JS键盘事件对象之keyCode、charCode、which属性对比

    先说一些有关键盘事件的事项:用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这 ...

  2. js event事件对象概括

    事件是用户或者浏览器自身执行的动作,而响应某个事件的函数就叫做事件处理程序或者叫事件侦听器. 定义事件处理程序可以大致分为以下三种: 一.html事件处理程序 元素支持的每种事件都可以用一个与之对应的 ...

  3. JS函数和对象(一)

    在本文章中,将对JS中的函数和对象进行一些讲解,不对之处还请之处 一.JS中的函数 1.1无参函数 其形式如下代码所示 function box(){ alert("我是一个函数,只有被调用 ...

  4. node js 函数和对象

    1.函数 1.1匿名函数 函数声明 function fn(){  } 函数表达式 var fun=function(){  } 函数名称和函数名称()的区别 fun/fn   fun()/fn() ...

  5. 深入理解js——函数和对象的关系

    函数也是对象,但是函数却不像数组--数组是对象的一种,它是对象的一个子集.函数和数组之间不是单纯的包含与被包含的关系,它们之间有点像鸡生蛋蛋生鸡的逻辑. 来例子:function Fn(){ this ...

  6. Js高级 事件 对象

    1.事件 浏览器客户端上客户触发的行为都成为事件 所有的事件都是天生自带的,不需要我们我去绑定,只需要我们去触发. 通过obj.事件名=function(){} 事件名:onmouseover onm ...

  7. 2-4 js基础-事件对象小结

    var e=ev||event; e.cancelBubble=true; document.documentElement   html document.body                  ...

  8. JS函数和对象

    1.函数 isNaN(数据)/parseInt/parseFloat/Number/prompt... 函数分为系统函数和自定义函数 function: 功能体,函数(方法),可以接受若干个数据,返回 ...

  9. JS 事件对象和事件冒泡

    1.事件对象 js的事件对象中保存了当前被触发事件的一些相关的属性信息,如事件源.事件发生时的鼠标位置.事件按键等. 事件对象的获取方法: IE中可以window.event直接获取,而Firefox ...

随机推荐

  1. 1.cassandra的搭建

    参考: https://blog.csdn.net/ch648966459/article/details/51671276

  2. logstash采集tomcat日志、mysql错误日志

    input{ file { path => "/opt/Tomcat7.0.28/logs/*.txt" start_position => "beginni ...

  3. JS 转整型

    1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...

  4. 分页Bootstrap实现

    <%@ include file="/init.jsp" %> <script type="text/javascript" src=&quo ...

  5. 面试官说:说一说CommonJs的实现原理

    其实刚看到这个题目的时候,我的内心是拒绝的,但是本着对科学的敬畏精神,我开始了 CommonJs 的探索之路. 来来来奉上我这几天的心血,拿走不客气.如有错误欢迎指正,共同进步. 提到CommonJs ...

  6. 5Lambda表达式

    C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作.首先看一下Lambda表达式的基本构成: [函数对象参数](操作符重载函数参数)mutable或exception -&g ...

  7. Java设计模式应用——组合模式

    组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...

  8. 如何将TNJ的源代码添加到eclipse[转]

    java编程思想第四版中net.mindview.util的jar包导入 在Java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewi ...

  9. Linux基础命令---bzcat

    bzcat 解压缩被bzip2压缩过的文件,将文件解压到标准输出,此命令只有一个选项-s.该指令对压缩过的二进制文件没有意义,因为二进制文件没有可读性. 此命令的适用范围:RedHat.RHEL.Ub ...

  10. Windows10 64位下安装TensorFlow谷歌人工智能系统已官方原生支持

    Windows10 64位下安装TensorFlow谷歌人工智能系统已官方原生支持 GitHub - tensorflow/tensorflow: Computation using data flo ...