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

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

先看这段代码

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

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

转载于:https://www.cnblogs.com/GMDDL/p/7582427.html

JS中this到底指哪个对象相关推荐

  1. js中string字符串转换为JSON对象 - 方法大全(4种)

    js中string字符串转换为JSON对象 - 方法大全(4种) jQuery插件支持的转换方式: 示例: //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对 ...

  2. JS中数组(Array)、Json对象长度(length)获取方法

    JS中数组(Array).Json对象长度(length)获取方法 1.数组 var array = []; var length = array.length; 2.JSON对象 1)方法1: va ...

  3. Java中JDK到底指什么呢?

    转自: Java中JDK到底指什么呢? 下文笔者讲述Java中JDK的相关简介说明,如下所示: JDK功能:JDK用于java程序开发,她可以将一个.java文件编译为 .class的java字节码文 ...

  4. js中‘0’到底是 true 还是 false

    js中'0'到底是 true 还是 false   if ('0') alert("'0' is true");   if ('0' == false) alert("' ...

  5. python中的模块是什么意思_python中模块到底指的是什么

    python中模块到底指的是什么 发布时间:2020-08-03 16:04:57 来源:亿速云 阅读:81 作者:清晨 小编给大家分享一下python中模块到底指的是什么,相信大部分人都还不怎么了解 ...

  6. js中if到底该如何判断变量为空?

    我们项目中常常需要判断一些变量是否为空,但是由于js的机制找不到很好的方法去统一判断方式,我们不妨先了解一下js中if判断机制 if判断机制 js中if会把非 Boolean 表达式转换为 Boole ...

  7. js 中 对 复杂数组(包含对象)的去重, 但是 NaN和 null 是无法排除的

    其实这个还是 在一个知乎上看到的一个 题目,题主说的话 他面了一个七八年的前端 不会对 复杂数据进行过滤 只会记得 通过Set的方式进行 简单数组的过滤 大概就是 var obj = [ { a: 2 ...

  8. JS中数据类型、内置对象、包装类型对象、typeof关系

    平时在复习JS基础知识时,经常会遇到JS数据类型.基础数据类型.内置对象.包装类型对象,检测数据类型时,用到的typeof值,感觉都差不多,但是又有差异.今天特地整理下,方便理解. JS数据类型 基础 ...

  9. js中函数、方法、对象的区别

    一.函数: 1.函数就是一个工具,通过一小段代码,完成某个功能: 2.函数的定义: function 函数名(){..... } 或者 : var 函数名 = function(){...... } ...

最新文章

  1. python抖音批量点赞_python抖音三百条,悠悠一笑乐逍遥
  2. 重磅发布!最新版《动手学深度学习》PDF 版今天终于可以下载
  3. sts 创建webservice项目_常用的RPC架构---WebService
  4. #include *.c文件的妙用
  5. SAP Fiori 应用的本地 sandbox Launchpad - 出于测试用途
  6. centos 调整home分区xfs_centos下扩容根分区(针对xfs和ext4不同文件系统)
  7. 解决pip2安装不成功的问题
  8. 工厂方法(Factory Pattern)
  9. PL/SQL编程1-基础
  10. Python3.x:pip install pymssql安装时出错
  11. ResNet 残差神经网络
  12. 为什么要使用英英词典?
  13. 同样是搞IT,差距怎么这么大呢,快来看看互联网行业最富有的100人
  14. 专访吴军:未来10年,AI的发展方向是应用,不会出现重大的理论突破
  15. 基于内容的图像检索 概述
  16. tracker使用_如何使用Tracker查找钥匙,钱包,电话或其他任何东西
  17. 浏览器无法访问hdfs界面问题
  18. H264视频通过RTMP直播 .
  19. 【建议收藏】一文了解FPC柔性电路板(5.29更新)
  20. 20201211_127_编码知识_中文乱码问题解决

热门文章

  1. acc 蓝牙_蓝牙耳机什么牌子好,哪个品牌的无线蓝牙耳机便宜好用
  2. 关于2014年上半年全国计算机等级考试有关事宜的通知,关于2014年上半年全国计算机等级考试报名的通知...
  3. Android SqlLite数据库的创建、增、删、改、查、使用事务
  4. 用U盘打开XP登入码
  5. 弥补Reflector反编译对中文支持的不足
  6. 2020-11-25 阿里云CentOS linux源配置脚本 https://mirrors.aliyun.com/repo/
  7. 计算机组组内培训记录,计算机教研组活动记录
  8. Spring.Net使用事务,try catch不回滚
  9. 让C#语言充当自身脚本!——.NET中的动态编译
  10. linux device attr,DEVICE_ATTR的使用