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

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

先看这段代码

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. 【Regular Expression】RE分类及案例

    背景知识 正则表达式分为三类:基础正则表达式.扩展正则表达式.Perl正则表达式(Perl内建) 通俗来说,这三个一个比一个强大,支持的规则匹配字符更多 1.匹配IP ip addr | grep - ...

  2. 【Ubuntu 16】安装deb

    deb是debian linux的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb  dpkg 是Debian Package的简写,是为Debian ...

  3. java异常之后代码执行测试

    1.程序代码: public static void main(String[] args) { int[] a = {1,2,3}; for(int i=0;i<4;i++){ System. ...

  4. Win7常用快捷键整理

    Win7常用快捷键整理.. -------------------- Win + Pause:显示系统属性对话框 ------------------------------------ Win7系统 ...

  5. DHCP解析

    DHCP解析... ------------------------ DHCP的工作原理: ====================== ======================DHCP动态主机地 ...

  6. 斜率DP hdu 3507

    Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...

  7. 最大流isap模板

    isap+bfs初始化+栈优化,点的编号从0开始: ; ; const int INF = 0x3f3f3f3f; struct Edge { int to, next, cap, flow; }ed ...

  8. python基础教程(五)

    字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...

  9. tp下的memcached运用

    来源:http://blog.csdn.net/fudaoji/article/details/50722839   侵删 一.环境: lnmp开发服务器, memcached2.2.0,thinkp ...

  10. 递归的二叉查找树Java实现

    package practice; public class TestMain { public static void main(String[] args) { int[] ao = {50,18 ...