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
讲的估计不是很清晰 希望各位大佬手下留情
JS中this到底指哪个对象的更多相关文章
- JS中new到底发生了什么
outline prototype 与 __proto__ function 与 object new 到底发生了什么 prototype 与 __proto__ 首先说下在JS中比较容易让人困惑的 ...
- JS中如何判断对象是对象还是数组
JS中如何判断对象是对象还是数组 一.总结 一句话总结:typeof Array.isArray === "function",Array.isArray(value)和Objec ...
- 细看JS中的BOM、DOM对象
DOM对象模型 DOM(Document Object Model),是指文档对象模型,是W3C组织推荐的处理可扩展标志语言的 ...
- jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题
今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...
- js中(event)事件对象
事件对象 • 什么是事件对象? • 就是当你触发了一个事件以后,对该事件的一些描述信息 • 例如: ° 你触发一个点击事件的时候,你点在哪个位置了,坐标是多少 ° 你触发一个键盘事件的时候,你按的是哪 ...
- 如何在Node.js中合并两个复杂对象
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...
- js中的函数,Date对象,Math对象和数组对象
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
- js中, 用变量或对象作为if或其他条件的表达式
源: 因为js是弱语言, 就体现在js的变量是弱类型的, 在js中所有变量类型声明都用var, 而在其他强类型语言中,如java/c,必须有强制类型转换和类型检查才能编译通过等, 但是: 弱语言也有优 ...
- js中如何返回一个存放对象的数组?
我这边需要返回后台数据的形式是这样的 {[ { ", }, { ", }, { ", }, { ", }, { ", } ]} 页面是通过循环去获取每 ...
随机推荐
- 【Centos7 GRUB】修改开机等待时间
centos7与之前版本不同,在/boot/grub/下没有 grub.conf文件,但在/etc/grub2/grub.cfg可找到帮助信息 [root@za default]# cat /boot ...
- 【Linux】文件存储结构
大部分的Linux文件系统(如ext2.ext3)规定,一个文件由目录项.inode和数据块组成: 目录项:包括文件名和inode节点号. Inode:又称文件索引节点,包含文件的基础信息以及数据块 ...
- CSS高级技巧
使用CSS复位 CSS复位可以在不同的浏览器上保持一致的样式风格.您可以使用CSS reset 库Normalize等,也可以使用一个更简化的复位方法:· * { box-sizing: border ...
- jQuery DOM对象区别与联系
对两种对象类型的定义,只要能理解并转换成自己的说法就可以,不用死板按照资料所写 jQuery对象(jq对象)其实就是通过jquery类库选择器获得的对象(或者说是通过$获取的对象或者说是通过jquer ...
- sphinx随笔记了一下
sphinx笔记 一:下载中文版coreseek包1:解压后,将etc下的mysql.conf文件复制一份放到上级目录下,改名为sphinx.conf2:配置文件: 2.1:source配置数据源so ...
- ID3算法(1)
1 简述1.1 id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发.id3根据信息增益,运用自顶向下的贪心策略建立决策树.信息增益用于度量某个属性对样本集合分类的好 ...
- MyEclipse简介
- 通过css控制超链接不显示下划线
“页面属性”——“链接”——“下划线样式”——“始终无下划线” <style type="text/css"> a:link { text-decoration: no ...
- 关于jsp页面转换成excel格式下载遇到问题及解决
jsp页面转成excel格式的实现思路: 1.使用poi包:poi-bin-3.9-20121203 下载连接地址:http://www.apache.org/dyn/closer.cgi/poi/r ...
- plsql developer 恢复默认布局界面
tools-preferences-appearance-(reset docking,reset toolbars)