JS中this到底指哪个对象
忘了原作者是谁了 自己也添加了一些东西 勉强可以观看一下
元素就不写了 可以自己添一下试试
先看这段代码
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到底指哪个对象相关推荐
- js中string字符串转换为JSON对象 - 方法大全(4种)
js中string字符串转换为JSON对象 - 方法大全(4种) jQuery插件支持的转换方式: 示例: //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对 ...
- JS中数组(Array)、Json对象长度(length)获取方法
JS中数组(Array).Json对象长度(length)获取方法 1.数组 var array = []; var length = array.length; 2.JSON对象 1)方法1: va ...
- Java中JDK到底指什么呢?
转自: Java中JDK到底指什么呢? 下文笔者讲述Java中JDK的相关简介说明,如下所示: JDK功能:JDK用于java程序开发,她可以将一个.java文件编译为 .class的java字节码文 ...
- js中‘0’到底是 true 还是 false
js中'0'到底是 true 还是 false if ('0') alert("'0' is true"); if ('0' == false) alert("' ...
- python中的模块是什么意思_python中模块到底指的是什么
python中模块到底指的是什么 发布时间:2020-08-03 16:04:57 来源:亿速云 阅读:81 作者:清晨 小编给大家分享一下python中模块到底指的是什么,相信大部分人都还不怎么了解 ...
- js中if到底该如何判断变量为空?
我们项目中常常需要判断一些变量是否为空,但是由于js的机制找不到很好的方法去统一判断方式,我们不妨先了解一下js中if判断机制 if判断机制 js中if会把非 Boolean 表达式转换为 Boole ...
- js 中 对 复杂数组(包含对象)的去重, 但是 NaN和 null 是无法排除的
其实这个还是 在一个知乎上看到的一个 题目,题主说的话 他面了一个七八年的前端 不会对 复杂数据进行过滤 只会记得 通过Set的方式进行 简单数组的过滤 大概就是 var obj = [ { a: 2 ...
- JS中数据类型、内置对象、包装类型对象、typeof关系
平时在复习JS基础知识时,经常会遇到JS数据类型.基础数据类型.内置对象.包装类型对象,检测数据类型时,用到的typeof值,感觉都差不多,但是又有差异.今天特地整理下,方便理解. JS数据类型 基础 ...
- js中函数、方法、对象的区别
一.函数: 1.函数就是一个工具,通过一小段代码,完成某个功能: 2.函数的定义: function 函数名(){..... } 或者 : var 函数名 = function(){...... } ...
最新文章
- python抖音批量点赞_python抖音三百条,悠悠一笑乐逍遥
- 重磅发布!最新版《动手学深度学习》PDF 版今天终于可以下载
- sts 创建webservice项目_常用的RPC架构---WebService
- #include *.c文件的妙用
- SAP Fiori 应用的本地 sandbox Launchpad - 出于测试用途
- centos 调整home分区xfs_centos下扩容根分区(针对xfs和ext4不同文件系统)
- 解决pip2安装不成功的问题
- 工厂方法(Factory Pattern)
- PL/SQL编程1-基础
- Python3.x:pip install pymssql安装时出错
- ResNet 残差神经网络
- 为什么要使用英英词典?
- 同样是搞IT,差距怎么这么大呢,快来看看互联网行业最富有的100人
- 专访吴军:未来10年,AI的发展方向是应用,不会出现重大的理论突破
- 基于内容的图像检索 概述
- tracker使用_如何使用Tracker查找钥匙,钱包,电话或其他任何东西
- 浏览器无法访问hdfs界面问题
- H264视频通过RTMP直播 .
- 【建议收藏】一文了解FPC柔性电路板(5.29更新)
- 20201211_127_编码知识_中文乱码问题解决
热门文章
- acc 蓝牙_蓝牙耳机什么牌子好,哪个品牌的无线蓝牙耳机便宜好用
- 关于2014年上半年全国计算机等级考试有关事宜的通知,关于2014年上半年全国计算机等级考试报名的通知...
- Android SqlLite数据库的创建、增、删、改、查、使用事务
- 用U盘打开XP登入码
- 弥补Reflector反编译对中文支持的不足
- 2020-11-25 阿里云CentOS linux源配置脚本 https://mirrors.aliyun.com/repo/
- 计算机组组内培训记录,计算机教研组活动记录
- Spring.Net使用事务,try catch不回滚
- 让C#语言充当自身脚本!——.NET中的动态编译
- linux device attr,DEVICE_ATTR的使用