首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

This指向改变This指向

This指向改变This指向 This 的指向 在 ES5 ,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。...所以 this 指向的也就是 window。 this 的指向并不是在创建的时候就可以确定的,在 es5 ,永远是this 永远指向最后调用它的那个对象。...改变 this 的指向 改变 this 的指向我总结有以下几种方法: 使用 ES6 的箭头函数 在函数内部使用 _this = this 使用 apply、call、bind new 实例化一个对象 例...我们将 this(指向变量 a) 赋值给一个变量 _this,这样,在 func2 我们使用 _this 就是指向对象 a 了。...所以我们可以看到,在 new 的过程,我们是使用 call 改变了 this 的指向

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

JS的this指向问题

全局上下文 非严格模式和严格模式this都是指向顶层对象(浏览器是window)。...根据参数thisArg的描述,可以知道,call就是改变函数的this指向为thisArg,并且执行这个函数,这也就使JS灵活很多。严格模式下,thisArg是原始值是值类型,也就是原始值。...4、不可以改变this的绑定。 5、形参名称不能重复。 箭头函数没有this绑定,必须通过查找作用域链来决定其值。...非严格模式下,null和undefined,指向全局对象(浏览器是window),其余值指向被new Object()包装的对象。 对象上的函数调用:绑定到那个对象。...这其实和 ES6 之前代码的 self = this 机制一样。 DOM事件函数:一般指向绑定事件的DOM元素,但有些情况绑定到全局对象(比如IE6~IE8的attachEvent)。

1.3K30

我攻克的技术难题:JS改变this的指向:call()、apply()、bind()

3种动态指定普通函数this的指向的方法:call()、apply()、bind() 在之前的学习,我发现在学习了很多JS方法后,却没有真正的应用起来或者是理解什么时候需要使用这些方法,导致自己很快就遗忘自己所学过的知识...所以在以后的笔记,我都会添加这些所学知识的应用场景。...age: 18 } function fn() { console.log(this) } const fun = fn.bind(obj) console.log(fun)应用场景只想改变...this指向,并且不想调用这个函数的比如改变定时器内部的this指向:如果有一个按钮,当我们点击了之后就禁用这个按钮,2秒钟之后又开启这个按钮 发送验证码 总结call()、apply()、bind()都可以改变函数内部的

26632

执行函数改变 this 的指向以及方法

执行函数改变 this 的指向以及方法 最开始还想把这个笔记名字改成 bind apply call 之前的区别,但是,想了想记录笔记还是要从原因开始,再到为什么再到怎么做。...所以,还是改成 执行函数改变 this 的指向以及方法。 改变 this 的指向的方法和执行 bind,apply,call 都是执行函数时,用来改变 this 的指向。...为什么需要改变这个 this 的指向 需要改变这个 this 的指向,是因为原来的 this 被污染了,需要重新再进行 this 指向,因为,this 指向的是被调用的父级作用域,而如果函数在另一个函数里面执行的时候...使用 apply 改变 this 指向 使用 apply 改变 this 指向和 call 改变指向大致上方法是一样的,唯一有不同的就是传参是以单个参数(数组)进行传递,如下图: const fighter...那么,Plane 的 this 就指向了 fighter ,更简单的理解就是,这个时候 Plane 的函数体放在了 Fighter ,也就是继承。

1.1K61

jsthis到底指向什么?

jsthis到底指向什么? 一、前言 前段时间,公司让我改一个界面,我心想改个界面还不简单吗?结果呃,我低估了这颗炸弹的威力。 好吧是我太菜,总结一下,这个this的指向问题。...在js,this的指向在定义函数的时候是确定不了的,只有在使用这个函数的时候才能确定this的指向。 一般来说在使用时,谁调用的这个函数,函数的this就指向它。...对象的函数,在运行时this指向了me这个对象。...在js,this的指向在定义函数的时候是确定不了的,只有在使用这个函数的时候才能确定this的指向。 这样,我稍微能理解点了,简单的来说就是谁调用的这个函数,函数里面的this就指向谁。...由此来看,定时器启动的函数的this都是指向与window。

90610

cocosCreator关于setTimeOut和setInterval改变this指向的问题

在setTimeOut()或setInterval()这样的方法,如果传入的函数包含this,那么,默认情况下,函数的this会指向window对象。...这回导致这些代码包含的this关键字会指向window对象。如下图: 下面那个this就是setInterval()this指向。...解决方法: 将当前对象的this存为一个变量 定时器内部的函数来访问到这个变量,此时的this,就指向了当前对象 function broadInter(){ var that = this;...console.log(this.msg); },1000) } 如何准确判断this指向的是什么?...函数是否在某个上下文对象调用(隐式绑定),如果是的话,this绑定的是那个上下文对象。一般是obj.foo()。 如果以上都不是,那么使用默认绑定。

92320

关于JSthis指向问题的探究

,第一,加深自己的理解,重新理一遍关于这方面的知识,第二,我尽可能的使用通俗简单的说辞进行解释 力求让更多的人明白这个东西,第三,this是js的一个关键字,很有必要单独拿出来写一篇文章。...js的this this js的this总是指向一个对象,也就是一个obj,但是具体指向的是哪一个obj是根据具体的运行时函数的执行环境动态绑定的,而不是函数被声明的环境!...,也就是windows,因为在js全局对象就是windows window.name = "globalName" var getName = function () {...console.info(this.id) //windows } callback() } 这个时候我们想callback里面的this指向不发生改变的话...JS很多别的不好理解的概念差不多,用的多了就明白了为什么那么写,很多的时候我们看到一个错,就知道需要使用let that = this类似这样的代码块解决,究其原因是他很理解错误的原因吗?

1.4K31

JS改变this指向的三种方法 (转载非原创)

('我是嵌套函数'); console.log(this); // Window } fun2();}fun1();4、自调执行函数(立即执行)内部的this也是指向window...(属性和方法)箭头函数没有this指向,如果在箭头函数中有,则会向上一层函数查找this,直到window二、改变this指向1、call() 方法call() 方法的第一个参数必须是指定的对象,然后方法的原参数...console.log(a + b);}//使用call() 方法改变this指向,此时第一个参数是 字符串call,那么就会指向字符串callfun.call('call', 2, 3) /...console.log(a + b);}//使用apply() 方法改变this指向,此时第一个参数是 字符串apply,那么就会指向字符串applyfun.apply('apply', [2,...;}//使用bind() 方法改变this指向,此时第一个参数是 字符串bind,那么就会指向字符串bindlet c = fun.bind('bind', 2, 3);c(); // 返回新的方法,需要重新调用

43500

一文读懂Js的this指向

对象的方法如果对象的方法里面包含this,this的指向就是方法运行时所在的对象。该方法赋值给另一个对象,就会改变this的指向。但是,这条规则很不容易把握。请看下面的代码。...但是,下面这几种用法,都会改变this的指向。...全局环境运行函数f时,this指向全局环境(浏览器为window对象);call方法可以改变this的指向,指定this指向对象obj,然后在对象obj的作用域中运行函数f。...因此,通过bind改变call的指向指向slice,slice就相当于Function的实例,call是slice实例下的一个方法,也就是将slice变成call方法所在的对象。...bind(f,o) 的含义是:调用Function.prototype.bind.call函数,第一个参数是改变bind指向指向f。第二个参数是bind的参数。

85700
领券