忘了原作者是谁了   自己也添加了一些东西  勉强可以观看一下

元素就不写了   可以自己添一下试试

先看这段代码

target.onclick = function(){

console.log(this);

}

答案打印的一定是target对象本身

任何的话都需要语境,上下文环境,放在不同的地方,含义可能就大不相同。

当有一个人对着你大喊一声:开!

如果你手里有把枪,你会扣动扳机。如果你坐在汽车里,你会踩油门。如果你站在阳台,你可能会打开窗户。

THIS身为一个关键字,它所指代的是此刻正在运行的函数依附于哪个对象。

以上面代码为例  增加

obj.test = target.onclick;

target.onclick();//结果是target对象本身

obj.test()//结果为obj对象本身

可以看到  虽然调用的函数相同  但是结果不同

因为函数此刻所依附的对象不同。

就好像同一句话,出自不同人之口,代词指向的目标则会不一样。

隔壁老王对你。。说 我爱你

你对老王说 你滚蛋

这个例子的你应该就是这个意思

再看一个

target.onclick = function(){

  setInterval(function(){console.log(this)},100);  

}

这个指向的对象是谁呢                                   表面上看 应该是target

但是 计时器中this指向的是window

target.onclick = function(){

  setInterval(function(){console.log(this)}.bind(this),100);  

}

那现在呢    它指向的就是target对象    bind()方法可以改变this指向 也有其他的改变this指向方法 就不多讲

target.onclick = function(){

  "use strict"

  setInterval(function(){console.log(this)},100);  

}

如果加上这个呢  就会报错 因为严格模式下不允许指向window

讲的估计不是很清晰 希望各位大佬手下留情

JS中this到底指哪个对象的更多相关文章

  1. JS中new到底发生了什么

    outline prototype 与 __proto__ function 与 object new 到底发生了什么 prototype 与 __proto__ 首先说下在JS中比较容易让人困惑的  ...

  2. JS中如何判断对象是对象还是数组

    JS中如何判断对象是对象还是数组 一.总结 一句话总结:typeof Array.isArray === "function",Array.isArray(value)和Objec ...

  3. 细看JS中的BOM、DOM对象

                                        DOM对象模型  DOM(Document Object Model),是指文档对象模型,是W3C组织推荐的处理可扩展标志语言的 ...

  4. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  5. js中(event)事件对象

    事件对象 • 什么是事件对象? • 就是当你触发了一个事件以后,对该事件的一些描述信息 • 例如: ° 你触发一个点击事件的时候,你点在哪个位置了,坐标是多少 ° 你触发一个键盘事件的时候,你按的是哪 ...

  6. 如何在Node.js中合并两个复杂对象

    通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...

  7. js中的函数,Date对象,Math对象和数组对象

    函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...

  8. js中, 用变量或对象作为if或其他条件的表达式

    源: 因为js是弱语言, 就体现在js的变量是弱类型的, 在js中所有变量类型声明都用var, 而在其他强类型语言中,如java/c,必须有强制类型转换和类型检查才能编译通过等, 但是: 弱语言也有优 ...

  9. js中如何返回一个存放对象的数组?

    我这边需要返回后台数据的形式是这样的 {[ { ", }, { ", }, { ", }, { ", }, { ", } ]} 页面是通过循环去获取每 ...

随机推荐

  1. 【Centos7 GRUB】修改开机等待时间

    centos7与之前版本不同,在/boot/grub/下没有 grub.conf文件,但在/etc/grub2/grub.cfg可找到帮助信息 [root@za default]# cat /boot ...

  2. 【Linux】文件存储结构

    大部分的Linux文件系统(如ext2.ext3)规定,一个文件由目录项.inode和数据块组成: 目录项:包括文件名和inode节点号.  Inode:又称文件索引节点,包含文件的基础信息以及数据块 ...

  3. CSS高级技巧

    使用CSS复位 CSS复位可以在不同的浏览器上保持一致的样式风格.您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法:· * { box-sizing: border ...

  4. jQuery DOM对象区别与联系

    对两种对象类型的定义,只要能理解并转换成自己的说法就可以,不用死板按照资料所写 jQuery对象(jq对象)其实就是通过jquery类库选择器获得的对象(或者说是通过$获取的对象或者说是通过jquer ...

  5. sphinx随笔记了一下

    sphinx笔记 一:下载中文版coreseek包1:解压后,将etc下的mysql.conf文件复制一份放到上级目录下,改名为sphinx.conf2:配置文件: 2.1:source配置数据源so ...

  6. ID3算法(1)

    1 简述1.1    id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发.id3根据信息增益,运用自顶向下的贪心策略建立决策树.信息增益用于度量某个属性对样本集合分类的好 ...

  7. MyEclipse简介

  8. 通过css控制超链接不显示下划线

    “页面属性”——“链接”——“下划线样式”——“始终无下划线” <style type="text/css"> a:link { text-decoration: no ...

  9. 关于jsp页面转换成excel格式下载遇到问题及解决

    jsp页面转成excel格式的实现思路: 1.使用poi包:poi-bin-3.9-20121203 下载连接地址:http://www.apache.org/dyn/closer.cgi/poi/r ...

  10. plsql developer 恢复默认布局界面

    tools-preferences-appearance-(reset docking,reset toolbars)