关于this的指向问题
一个关于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的指向问题相关推荐
- idea中设置指向源代码Scala
1.到官网下载scala源代码 点击如下链接下载源码:http://www.scala-lang.org/download/all.html 选择需要的版本点击进行下载,我选择的是2.11.8版本,如 ...
- 父类引用指向子类对象
父类引用指向子类对象,如何访问子类的属性? 1.第一种办法最简单,强制类型转化为子类. 2.父类引用指向子类对象,由于当前引用为父类,只能访问父类的字段和方法,但是根据多态性可以访问子类的方法,在这个 ...
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...
- vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题
今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1 ...
- 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)
动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...
- java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- C++:将char*指针强制转换成一个指向结构体的指针
在使用Socket与雷达进行通信采集数据时,会遇到"打包与解包"的问题,在打包和解包过程中,会涉及到结构体指针与字符指针间的强制转换.如下: 打包就是将包头与信息封装成一定大小的包 ...
- C指针8:二级指针(意思就是指向指针的指针)
指针可以指向一份普通类型的数据,例如 int.double.char 等,以下简称一级指针: 也可以指向一份指针类型的数据,例如 int *.double *.char * 等.以下简称二级指针:即如 ...
- C指针5:字符串指针(指向字符串的指针)
在C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,字符数组实际上是一系列字符的集合,也就是字符串(String).在C语言中,没有专门的字符串变量,没有string类型,通常就用一 ...
- C指针4:数组指针(指向数组的指针)
先明确两个概念:(1和2是两个完全不一样的东西) 1.数组指针:如果一个指针指向了数组(该数组就是普通定义的数组),我们就称它为数组指针(Array Pointer).(1强调的是指针) 2.指针数组 ...
最新文章
- Tomcat7并发和线程数
- Python比对指定目录下的Excel数据(附源码)
- GitHub 标星 32.7 k!一行命令下载全网视频,这个项目牛逼了!
- 贝叶斯规则(Bayes’ rule)
- 防火墙contos6.8操作手册
- xlutils演练 修改表格内容
- 杨澜对话华为周跃峰:发展数字经济,存储技术是关键
- ziplist之详细分析
- Docker下Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决方案
- SQL服务器名称的更改
- 并查集(ACWING三道题)
- win桌面显示html,win10怎么把ie图标放桌面上 win10桌面添加ie浏览器图标的方法
- 程序员【超实用】面试问题
- java 微信多公众号管理_微信公众号开发:支持对多个公众号的管理
- 各种进制数之间的转换
- GeoTrans2.4.1 用户手册 之 (三)协调转换和数据传输
- opencv4.1无法加载python-cnn模型,编译第三方库libtensorflow_cc.so巨坑
- 高等数学期末总复习DATY9.积分上限函数、基本定积分计算、定积分换元法、定积分的分部积分、三角函数的N次方积分、反常积分(广义积分)
- 靶机18 driftingblues1
- 开关电源入门01-开关电源的基本形式