一个关于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的指向问题的更多相关文章

  1. C语言中 指向函数的指针 简介

    引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...

  2. JS this指向

    正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...

  3. java多态性,父类引用指向子类对象

    父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...

  4. 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题

    setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟 ...

  5. what's this? 浅谈js中this的指向问题

    刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量 ...

  6. EC笔记,第二部分:10.让=返回指向*this的引用

    Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...

  7. JavaScript中this指针指向的彻底理解

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...

  8. JavaScript中this指向的简单理解

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  9. 12-返回指针的函数&&指向函数的指针

    前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...

  10. 彻底理解js中this的指向,不必硬背。

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

随机推荐

  1. 学习OpenSeadragon之一(一个显示多层图片的开源JS库)

    OpenSeadragon是一个可以显示多层图片(可放大缩小)的Web库,基于JavaScript,支持桌面和手机. 由于我项目需要,却没有找到任何中文教程,因此在官网上一边学习,一边总结于此. 官网 ...

  2. HashMap工作原理

    hashmap存储的为key-value键值对,get的时间复杂度是O(1),具体实现原理如下: 1. hashmap是基于数组之上,通过一定算法,用空间转换时间 2. hashmap的数据结构为数组 ...

  3. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5

    最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈  .之前用ThinkPHP的时候,下载完放到网 ...

  4. js本地存储解决方案(localStorage与userData)

    WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的user ...

  5. 开发H5小游戏

    Egret白鹭H5小游戏开发入门(一)   前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...

  6. 转:成为JavaGC专家Part I — 深入浅出Java垃圾回收机制

    文章来自于:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解 ...

  7. 如何让多个Activity共用一个Menu

    我们可以定义一个自己的CommActivity继承自Activity,然后让每个自定义Activity继承CommActivity,就可以做到. 例如: public class CommActivi ...

  8. Android 解析JSON数组

    1:服务端是使用PHP,从数据库中查询出一个二维数组,然后调用系统函数以json格式返回给客户端. 返回结果如下:http://192.168.0.116/server/selectTitle2jso ...

  9. 【转】用串口登录Beaglebone Black、用usb共享电脑网络、内核模块的本地编译

    原文网址:http://bbs.eeworld.com.cn/thread-431507-1-1.html 串口连接BBB使用usb线可以连接BBB和电脑,用ssh就可以登录BBB来进行操作.但有时候 ...

  10. poj2114 Boatherds

    Description Boatherds Inc. is a sailing company operating in the country of Trabantustan and offerin ...