首页
学习
活动
专区
工具
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()都可以改变函数内部的

30432

执行函数改变 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。

6710

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()。 如果以上都不是,那么使用默认绑定。

1K20

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(); // 返回新的方法,需要重新调用

53800

关于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 在各个场景下的指向

1. this 的奥秘 很多时候, JS 的 this 对于咱们的初学者很容易产生困惑不解。 this 的功能很强大,但需要一定付出才能慢慢理解它。...在J要中情况就有所不同: this表示函数的当前执行上下文,JS 函数调用主要有以下几种方式: 函数调用: alert('Hello World!')...其中,this指向新创建的对象。 构造函数创建了一个新的空的对象,它从构造函数的原型继承了属性。构造函数的作用就是去初始化这个对象。 可能你已经知道了,在这种类型的调用,上下文指向新创建的实例。...构造函数的 this 在构造函数调用 this 指向新创建的对象 构造函数调用的上下文是新创建的对象。它利用构造函数的参数初始化新的对象,设定属性的初始值,添加事件处理函数等等。 ?...JS的函数是第一类对象,这意味着函数就是对象,对象的类型为Function。从函数对象的方法列表,.call()和.apply()用于调用具有可配置上下文的函数。

4.4K10
领券