关于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]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);
}
关于this的指向问题的更多相关文章
- C语言中 指向函数的指针 简介
引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...
- JS this指向
正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...
- java多态性,父类引用指向子类对象
父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...
- 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题
setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟 ...
- what's this? 浅谈js中this的指向问题
刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量 ...
- EC笔记,第二部分:10.让=返回指向*this的引用
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...
- JavaScript中this指针指向的彻底理解
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...
- JavaScript中this指向的简单理解
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 12-返回指针的函数&&指向函数的指针
前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针 一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...
- 彻底理解js中this的指向,不必硬背。
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
随机推荐
- 武汉科技大学ACM:1003: 华科版C语言程序设计教程(第二版)例题6.6.改编
Problem Description 小明明最喜欢学英语了,英语课从来不翘课,但是英语却一直没学好,因为上课一直在睡觉.为什么会睡觉呢,因为他觉得英文单词太长了.现在小明明有一个很长很长很长的单词, ...
- JavaScript实现回车键切换输入框焦点
用JavaScript实现回车键切换输入框焦点的功能,不是回车换行哦,在Textarea中,回车换行是默认功能,不过若要在textarea中使用 回车切换输入框焦点功能的话,回车换行就要失效了,不过i ...
- 判断iOS设备是否越狱
- (BOOL)isJailbroken { BOOL jailbroken = NO; NSString *cydiaPath = @"/Applications/Cydia.app&qu ...
- hdu 4544 湫湫系列故事——消灭兔子
http://acm.hdu.edu.cn/showproblem.php?pid=4544 优先队列+贪心. #include <cstdio> #include <queue&g ...
- Android开发 解决AlertDialog中的EditText无法调出输入法的问题
在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题.解决方法,有两种,一是把AlertDialog换成Dialog,但这 ...
- SqlMapConfig.xml全局配置文件解析
一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器 ...
- Leetcode:Largest Number详细题解
题目 Given a list of non negative integers, arrange them such that they form the largest number. For e ...
- Linux系统编程(37)—— socket编程之UDP服务器与客户端
典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...
- office web apps server 问题和解决办法
New-OfficeWebAppsFarm –InternalURL "http://owa.zjkhlib.com" –AllowHttp –EditingEnabled 错误1 ...
- java与数据结构(6)---java实现链栈
栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...