zoukankan      html  css  js  c++  java
  • 事件绑定+call apply指向

    JS高级

    事件——

      浏览器客户端上客户触发的行为都称为事件

      所有事件都是天生自带的,不需要我们去绑定,只需要我们去触发,通过obj.事件名=function(){ }

      事件名:onmousemove;onmouseup;onmousedown;等等

      当用户触发一个事件时,浏览器所有详细信息都存在一个叫event的对象身上;我们把它叫事件对象

      所有的事件在绑定方法的时候,天生自带一个参数叫Event

    鼠标的坐标:

      event.clientX  event.clientY

    event的兼容性:

      在Chrome(谷歌)下event是undefined

      在IE低版本(7,8,9)下event是null

      在火狐下event会报错

        document.onclick=function(ev){

          var   ev=ev||windo.event  

        }

    事件冒泡:

      定义:

        当父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,也会触发父级元素的相同事件,这种传播机制叫事件冒泡

    取消事件冒泡:

      event对象有个属性叫 cancelBubble,默认值是false;改成true就取消了;

    事件捕获:

      给一个元素绑定事件;普通写法——

          obj.onclick=function(){}

          obj.onclick=function(){}  相当于给obj的onclick属性赋值

          缺点:会覆盖

      事件绑定的第二种写法——

          标准浏览器:addEventListener

          IE低版本:attachEvent

      addEventListener(参数1;参数2;参数3)

        参数1:事件名,事件名不能带 “ on 

        参数2:事件函数

        参数3:布尔值;代表捕获不捕获,默认为false,不捕获但是冒泡

      定义:

        IE低版本没有捕获;

        普通事件绑定写法没有捕获(因为会覆盖)

        给父元素用addEventListener()绑定同一事件时,当触发子元素身上的事件时,先触发父元素,然后在传递给子元素,这种传播机制叫事件捕获

      addEventListener() 和 attachEvent()二者区别:

        1,attachEvent()只用在IE8 以下;addEventListener()适合标准浏览器

        2,attachEvent()事件名带 “ on ”;addEventListener()事件名不带 “ on ”

        3,attachEvent()函数里面的this是window;addEventListener()函数里面的this是触发该事件的函数(当前元素对象)

        4,attachEvent()只用冒泡,没有捕获;addEventListener()可有冒泡,可有捕获

    call()和apply():

      改变函数内部的this指向,的方法

      xxx.call()或 xxx.apply()  xxx必须是function(普通函数;类;构造函数)

      call()中的第一个参数是null的时候,函数里面的this还是指向原来的,不变

      var obj={

                name:"志伟"

          }

          function fn(){

                console.log(this.name)

          }

    *所有的事件都是异步的

      

  • 相关阅读:
    NodeMCU快速上云集锦
    云数据库 MySQL 8.0 重磅发布,更适合企业使用场景的RDS数据库
    MySQL 8.0 技术详解
    为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!
    阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年
    容器服务kubernetes federation v2实践五:多集群流量调度
    Helm V3 新版本发布
    Serverless助力AI计算:阿里云ACK Serverless/ECI发布GPU容器实例
    详解TableStore模糊查询——以订单场景为例
    洛谷P2727 01串 Stringsobits
  • 原文地址:https://www.cnblogs.com/xiaotaiyangye/p/10044203.html
Copyright © 2011-2022 走看看