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

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

时间: 2024-10-10 18:31:58

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

在js中使用createElement创建HTML对象和元素 (转)

1.创建链接 <script language="javascript"> var o = document.body; //创建链接 function createA(url,text) { var a = document.createElement("a"); a.href = url; a.innerHTML = text; a.style.color = "red"; o.appendChild(a); } createA(

JS中的如何构造自定义对象

一.对象是什么及组成及使用方法: 1.对象是种特殊的数据结构,结合了数据与依据数据行动的程序代码. 2.实际上,对象只是结合成单一结构体的变量和函数. 3.当变量被放在对象中时,它称为特性:当函数被放在对象中时,它被称为方法. 4.引用特性和方法时需提供对象的名称,后随点号运算符,再接上特性或方法的名称. 二.构造函数负责创建对象: 既然对象具有相关的数据,数据便需在对象创建时初始化,此时需要一个特殊的方法——构造函数(constructor),来为对象准备运行.每个对象都需要自己的构造函数,其

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

函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. 其语法结构为 function funName (arg0, arg1, … argN){        //statements    } function say_hello (name, msg){ alert(“hello”+ name + “:”+ msg); } say_hello(“d

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

通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: var obj1 = { "name" : "myname", "status" : 0, "profile": { "sex":"m", "isactive" : tr

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

我这边需要返回后台数据的形式是这样的 {[ { "ItemId": "18", "SelectId": 2 }, { "ItemId": "19", "SelectId": 1 }, { "ItemId": "20", "SelectId": 1 }, { "ItemId": "21",

js 中this到底指向哪里?

其实js的this指向很简单.我们记住下面3种情况. this 指向的是浏览器中的window.代码如下: function fn(){ this.name='yangkun'; this.age=28; } 当我们执行fn()的时候,这个普通函数中的this指向到底是什么?答案就是指向的是浏览器中的window.(这里说明,这里实在浏览器下,如果是node环境不是). 如果这个时候我们对上面的函数进行进一步操作: function fn(){ this.name='yangkun'; this

细看JS中的BOM、DOM对象

DOM对象模型 [DOM树节点] DOM节点分为三大类:元素节点,文本节点,属性节点: 文本节点,属性节点为元素节点的两个子节点: 通过getElment系列方法,可以去到元素节点: [查看节点] 1.getElementById:通过id获取唯一的节点:多个同名ID只会取到第一个: 2.etElementByName:通过name取到一个数组,包含1到多个节点: 使用方式:通过循环取到每个节点,循环次数,从0开始<数组.length [查看设置属性节点] 1.查看属性节点:getAttribu

原生js中获取this与鼠标对象以及vue中默认的鼠标对象参数

1.通过原生js获取this对象 ``` <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <form action="" class="files" > <label class="file"

js中的DOM事件与对象

概念图 document.getElementById("bb"); 根据id找到bb,只能找一个哦 var aa = document.getElementById("bb"); 设一个变量aa,getElemenById,根据id找到bb,并赋值给aa: var div2 = document.getElementsByClassName("bb")[0]; 根据classname寻找到bb,并赋值给变量div2:找到的是一个数组哦: var