一个关于this指向而引发的血案。。。

在测试this指向的程序中,我写错了id对象,结果呢,居然也有效果,这真是超于我意料之外太多了,我以为自己写错了,结果一样可以用。。。。。。。

<div id="bbb">show</div>

<script>// window.onload = function(){//   ////        var s = document.getElementById('bbb');//        s.onclick = showThis;//this == div#show  //        bbb.onclick = function(){//          console.log(showThis);//返回的是定义showThis的内容//         showThis();//this = window//        }  //        // showThis();//this = window// }// function showThis(){//   console.log(this);// }window.onload = function(){//直接使用id的方式调用方法,ie7,8,9,10,11,都支持,只不过ie7都返回object,其他都是[object Window],[object HTMLDivElement]bbbvar s = document.getElementById('bbb');s.onclick = showThis;//this == div#show   bbb.onclick = function(){showThis();//this = windowalert(this+'bbb')}  // showThis();//this = window}function showThis(){alert(this);}
</script>

做一点总结: window.onload = function(){

        //直接使用id的方式调用方法,ie7,8,9,10,11,都支持,只不过ie7都返回object,其他都是[object Window],[object HTMLDivElement]bbbvar s = document.getElementById('bbb');console.log(s[onclick])// s.onclick = showThis;//this == div#shows.onclick = showThis;//实际上是把showThis的内容赋值给s.onclick,在未赋值前,s[onclick]为undifineds.onclick = showThis();//实际上和showThis()一样,也没有返回值,这样的方式其实在onclick为赋值前,showThis已经执行了;s.onclick = function(){//也是赋值,但是因为showThis是在外面定义的,所以showThis的this还是windowshowThis()}s.onclick = function(){//相当于s.onclick = showThis;也是赋值alert(this)}// s.onclick = showThis();// bbb.onclick = function(){//     showThis();//this = window//     alert(this+'bbb')// }  // showThis();//this = window}function showThis(e){alert(this);}

  

转载于:https://www.cnblogs.com/bestsamcn/p/5498048.html

关于this的指向问题相关推荐

  1. idea中设置指向源代码Scala

    1.到官网下载scala源代码 点击如下链接下载源码:http://www.scala-lang.org/download/all.html 选择需要的版本点击进行下载,我选择的是2.11.8版本,如 ...

  2. 父类引用指向子类对象

    父类引用指向子类对象,如何访问子类的属性? 1.第一种办法最简单,强制类型转化为子类. 2.父类引用指向子类对象,由于当前引用为父类,只能访问父类的字段和方法,但是根据多态性可以访问子类的方法,在这个 ...

  3. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

  4. vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题

    今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1 ...

  5. 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)

    动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...

  6. java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思

    Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...

  7. C++:将char*指针强制转换成一个指向结构体的指针

    在使用Socket与雷达进行通信采集数据时,会遇到"打包与解包"的问题,在打包和解包过程中,会涉及到结构体指针与字符指针间的强制转换.如下: 打包就是将包头与信息封装成一定大小的包 ...

  8. C指针8:二级指针(意思就是指向指针的指针)

    指针可以指向一份普通类型的数据,例如 int.double.char 等,以下简称一级指针: 也可以指向一份指针类型的数据,例如 int *.double *.char * 等.以下简称二级指针:即如 ...

  9. C指针5:字符串指针(指向字符串的指针)

    在C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,字符数组实际上是一系列字符的集合,也就是字符串(String).在C语言中,没有专门的字符串变量,没有string类型,通常就用一 ...

  10. C指针4:数组指针(指向数组的指针)

    先明确两个概念:(1和2是两个完全不一样的东西) 1.数组指针:如果一个指针指向了数组(该数组就是普通定义的数组),我们就称它为数组指针(Array Pointer).(1强调的是指针) 2.指针数组 ...

最新文章

  1. Tomcat7并发和线程数
  2. Python比对指定目录下的Excel数据(附源码)
  3. GitHub 标星 32.7 k!一行命令下载全网视频,这个项目牛逼了!
  4. 贝叶斯规则(Bayes’ rule)
  5. 防火墙contos6.8操作手册
  6. xlutils演练 修改表格内容
  7. 杨澜对话华为周跃峰:发展数字经济,存储技术是关键
  8. ziplist之详细分析
  9. Docker下Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决方案
  10. SQL服务器名称的更改
  11. 并查集(ACWING三道题)
  12. win桌面显示html,win10怎么把ie图标放桌面上 win10桌面添加ie浏览器图标的方法
  13. 程序员【超实用】面试问题
  14. java 微信多公众号管理_微信公众号开发:支持对多个公众号的管理
  15. 各种进制数之间的转换
  16. GeoTrans2.4.1 用户手册 之 (三)协调转换和数据传输
  17. opencv4.1无法加载python-cnn模型,编译第三方库libtensorflow_cc.so巨坑
  18. 高等数学期末总复习DATY9.积分上限函数、基本定积分计算、定积分换元法、定积分的分部积分、三角函数的N次方积分、反常积分(广义积分)
  19. 靶机18 driftingblues1
  20. 开关电源入门01-开关电源的基本形式

热门文章

  1. c++中的输入输出方法
  2. Rails的作者DHH获奖:Winning Google/O'Reilly's Best Hacker of '05
  3. 集成学习算法总结----Boosting和Bagging
  4. Go 语言读写 Excel
  5. Android之PowerManagerBatteryManager
  6. Spark ThriftServer使用的大坑
  7. 轻用其芒,动即有伤,是为凶器;深藏若拙,临机取决,是为利器!
  8. Java JPanel的使用
  9. ESX 4 不能使用SSH登录的解决
  10. 极虎病毒创造四个“之最”