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

This指向改变This指向

This指向改变This指向 This 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。...改变 this 的指向 改变 this 的指向我总结有以下几种方法: 使用 ES6 的箭头函数 在函数内部使用 _this = this 使用 apply、call、bind new 实例化一个对象 例...使用 apply、call、bind 使用 apply、call、bind 函数也是可以改变 this 的指向的, 使用 apply 例 10: var a = { name : "Cherry...使用 call 改变 this 的指向 如果无返回值或者返回一个非对象值,则将 obj 返回作为新对象;如果返回值是一个新对象的话那么直接直接返回该对象。...所以我们可以看到,在 new 的过程中,我们是使用 call 改变了 this 的指向

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

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

    转载来源: https://www.cnblogs.com/mochenxiya/p/16698139.html一、this指向点击打开视频讲解更加详细this随处可见,一般谁调用,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(); // 返回新的方法,需要重新调用

    57600

    我攻克的技术难题: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()都可以改变函数内部的...this指向,但是call传递参数aru1,aru2...形式 apply传递参数arg形式bind区别于其他两种,不会调用函数我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    32232

    JS中的this指向问题

    全局上下文 非严格模式和严格模式中this都是指向顶层对象(浏览器中是window)。...第一个参数是undefined或者null,非严格模式下,是指向window。严格模式下,就是指向第一个参数。后文详细解释。 经常有这类代码(回调函数),其实也是普通函数调用模式。...根据参数thisArg的描述,可以知道,call就是改变函数中的this指向为thisArg,并且执行这个函数,这也就使JS灵活很多。严格模式下,thisArg是原始值是值类型,也就是原始值。...4、不可以改变this的绑定。 5、形参名称不能重复。 箭头函数中没有this绑定,必须通过查找作用域链来决定其值。...非严格模式下,null和undefined,指向全局对象(浏览器中是window),其余值指向被new Object()包装的对象。 对象上的函数调用:绑定到那个对象。

    1.3K30

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

    所以,还是改成 执行函数中改变 this 的指向以及方法。 改变 this 的指向的方法和执行 bind,apply,call 都是执行函数时,用来改变 this 的指向。...为什么需要改变这个 this 的指向 需要改变这个 this 的指向,是因为原来的 this 被污染了,需要重新再进行 this 指向,因为,this 指向的是被调用的父级作用域,而如果函数在另一个函数里面执行的时候...这个就需要把 这个 this 的指向改成指向 fighter 这个对象。以下是改变 this 指向的方法。...使用 call 改变 this 指向 call的第一个参数是 this 的指向,后面是一个传入参数的列表。...使用 apply 改变 this 指向 使用 apply 改变 this 指向和 call 改变指向大致上方法是一样的,唯一有不同的就是传参是以单个参数(数组)进行传递,如下图: const fighter

    1.2K61

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

    在setTimeOut()或setInterval()这样的方法中,如果传入的函数包含this,那么,默认情况下,函数中的this会指向window对象。...这回导致这些代码中包含的this关键字会指向window对象。如下图: 下面那个this就是setInterval()中this指向。...解决方法: 将当前对象的this存为一个变量 定时器内部的函数来访问到这个变量,此时的this,就指向了当前对象 function broadInter(){ var that = this;...){ setInterval(function(){ console.log(this.msg); },1000) } 箭头函数 ES6中的箭头函数,this总是指向词法作用域...function broadInter(){ setInterval(()=>{ console.log(this.msg); },1000) } 如何准确判断this指向的是什么

    1K20

    js中this到底指向什么?

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

    7310

    关于JS中this指向问题的探究

    写在前面 本篇文章的所有例子来源都是《JS设计模式与开发实践》这本书,写这篇文章之前也去查阅了很多关于this指向问题的探讨,包括但不仅仅有像阮一峰老师,还有很多的博主的帖子,还是决定写这篇文章有以下几个原因...,第一,加深自己的理解,重新理一遍关于这方面的知识,第二,我尽可能的使用通俗简单的说辞进行解释 力求让更多的人明白这个东西,第三,this是js中的一个关键字,很有必要单独拿出来写一篇文章。...js中的this this js中的this总是指向一个对象,也就是一个obj,但是具体指向的是哪一个obj是根据具体的运行时函数的执行环境动态绑定的,而不是函数被声明的环境!...console.info(this.id) //windows } callback() } 这个时候我们想callback里面的this指向不发生改变的话...JS中很多别的不好理解的概念差不多,用的多了就明白了为什么那么写,很多的时候我们看到一个错,就知道需要使用let that = this类似这样的代码块解决,究其原因是他很理解错误的原因吗?

    1.4K31
    领券