一个关于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]bbb
var s = document.getElementById('bbb');
s.onclick = showThis;//this == div#show
bbb.onclick = function(){
showThis();//this = window
alert(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]bbb
var s = document.getElementById('bbb');
console.log(s[onclick])
// s.onclick = showThis;//this == div#show
s.onclick = showThis;//实际上是把showThis的内容赋值给s.onclick,在未赋值前,s[onclick]为undifined
s.onclick = showThis();//实际上和showThis()一样,也没有返回值,这样的方式其实在onclick为赋值前,showThis已经执行了;
s.onclick = function(){//也是赋值,但是因为showThis是在外面定义的,所以showThis的this还是window
showThis()
}
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);
}

  

最新文章

  1. 仿QQ消息气泡提醒
  2. iOS开发——项目实战总结&amp;带你看看Objective-C的精髓
  3. javascript变量和对象要注意的点
  4. SQL知识累积
  5. Java [leetcode 22]Generate Parentheses
  6. protocol buffer VS 2013编译出错
  7. 程序处理数据库中值字段值为null的查询显示
  8. 360回归A股,周鸿祎来给BAT和小米添堵了
  9. .NET 设计模式的六大原则理论知识
  10. 查看Oracle中存储过程长时间被卡住的原因
  11. nova98 假区域链 骗人项目(vexx.pro的前身)
  12. 51ak带你看MYSQL5.7源码4:实现SQL黑名单功能
  13. IDEA下载依赖时提示 resolving dependencies of xxx, yyy
  14. Manjaro更新出现冲突
  15. [luogu4556][Vani有约会]
  16. python基础类型—元祖
  17. Linux内核分析第七次作业
  18. 前端调用接口报错看不到报错响应时 console.dir
  19. 分区助手里如何从临近盘(如D盘)抽取一定的空间给已经快满了的盘(如E盘)(博主推荐)(图文详解)
  20. shell 数组基础-&gt;

热门文章

  1. ACM中常用的C/C++函数
  2. CURL请求接口
  3. java学习笔记 (9) —— Struts2 国际化
  4. em px 简单换算
  5. 安装centos mini版,无法联网,用yum安装软件提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法
  6. 深度围观block:第三集
  7. 复杂事件处理引擎—Esper参考(事件部分)
  8. 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移
  9. web UI
  10. C# 文件创建时间,修改时间