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

JSthis指向问题

this指向问题 this应该是第一个让人对JavaScript困惑问题了,但是实际上它原理非常简单:函数this在运行时绑定。 什么叫运行时绑定?...就是函数this和你写在哪里无关,而是和谁调用它有关。谁调用这个函数,this就指向谁。 你现在大概会在想:原来这么简单,我精通了!...先问自己:谁调用它?你应该一下看不出来,这明明就是直接调啊!可能有的基础比较扎实的人会说是window,那真是非常恭喜你了,但你要注意是以上代码在严格模式下是undefined。...正解:brother call / bind / apply 此为3种干预this指向操作,限于篇幅不展开讲。...箭头函数 箭头函数可以让你省很多事,因为它this一般来说都是符合你直觉:它this就是定义时候this。

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

关于JSthis指向问题探究

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

1.4K31

JavaScriptthis指向问题

在独立函数调用,this默认绑定也指向全局对象。...实际应用,常见this指向问题 在嵌套函数丢失this:当在一个函数内部定义另一个函数,并在内部函数中使用this时,this指向会发生变化。...可以使用箭头函数或通过在外部函数中将this赋值给一个变量来解决这一问题。 事件处理函数this:在事件处理函数,this通常指向触发事件元素。...可以使用箭头函数、bind()方法,或通过在外部函数中将this赋值给一个变量来解决这一问题。 对象方法this:在对象方法,this通常指向调用该方法对象。...但是,如果将该方法赋值给一个变量,并通过变量来调用方法,this将指向全局对象。可以使用bind()方法或箭头函数来解决这一问题

19360

JavaScriptthis指向问题

1、什么是this this一般指向是调用它对象,比如调用它上下文是window对象,那就是指向window对象,如果调用它上下文是某对象就是指向某对象…… //例如 console.log...(this) //window //这里调用者是全局对象window,所以this指向window ?...2、用来干嘛 this在一般情况下,是指向函数上下文,可以处理一些作用域下事件调用 如果想要引用某对象方法,就不用写太多重复代码,直接用this调用某对象方法 3、怎么在代码中使用 console.log...4.1引入call、bind、apply 4.1.1区别 共同点 都是函数内置方法 都可以改变函数执行上下文 注:改变上下文可以为程序节省内存空间,减少不必要内存操作 通俗易懂解释改变上下文:...小张在公司有个快递要拿,刚好有事,自己拿不了,他就安排小王拿,这里小张本来是拿快递执行上下文,因为有事,就改变拿快递执行上下文,变成了小王,节约了小张时间,他就不用另外安排时间去拿快递了 不同点

1.1K11

js关于this指向训练题

this指向js开发必须掌握知识,今天我们就用一道题目来看看你基础。 ? 各位认为会输出什么呢?请大家先思考不要直接去运行看答案。 实际上会输出:5和2。...(1):第一行fn(),这个毫无疑问,this指向是window,所以length自然输出5,大家不要看到fn()在obj对象里面调用,就把this认为指向了obj,这是非常错误; this指向谁,...是在于函数执行时环境对象,fn()在执行时,他环境对象依然是window,这里fn()大家可以理解为window.fn(),是这样进行执行。...所以,这里大家可以理解为:arguments[0]()=arguments.fn(); this对象就是指向了arguments,length也自然是2了。...大家明白了吗,这道题对于this指向还是比较经典题目,如果这道题可以独立做出来,证明this指向这块,你基本上是过关

78810

jsthis到底指向什么?

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

90610

一次搞定jsthis指向

jsthis指向是在运行时会变动 这句话严谨说是有问题。 this这个关键词,在java解释是引用当前类实例变量。...,那么,这个函数调用者就是此函数执行作用域中this 所以,归根结底,this是当前执行方法调用者 你以为这样就结束了?...Too young too simple js还有三个显式绑定this方法,bind,apply,call当使用这些方法指定执行函数this时,那this基本上就是指定了 基本上?...上面的代码用babel编译之后 var _this = this; var sayThis = function () { console.log(_this); }; 复制代码 很容易理解箭头函数this...指向 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100937.html原文链接:https://javaforall.cn

41730

JS 几种轻松处理’this’指向方式

我喜欢在JS更改函数执行上下文指向,也称为 this 指向。...execute(agent.getFullName); // => 'undefined undefined' ``` 执行结果不正确:`'undefined undefined'`,这是 `this` 指向不正确导致问题...现在在`getFullName()` 方法,`this`值是全局对象(浏览器环境 `window` )。...或者静态地将`this`绑定到包含对象(使用箭头函数、`.bind()`方法等) 方法分离问题,以及由此导致`this`指向不正确,一般会在下面的几种情况中出现: **回调** ```JavaScript...这种方法是在类绑定this最有效和最简洁方法。 6. 总结 与对象分离方法会产生 this 指向不正确问题。静态地绑定this,可以手动使用一个附加变量self来保存正确上下文对象。

98620

JS控制好this关键字指向

javascript this 指向不太好控制,理解不好的话很容易错误 下面几个示例可以加深对this指向理解 (1)内联事件 <a href="#" onclick="alert(this.tagName...( duang.hi, 1000); setInterval( duang.hi, 1000); 这两种情况都会弹出“我是 全局” 因为setTimeout和setInterval都会改变this<em>的</em><em>指向</em>为...属性值,而是弹出了button<em>的</em>name属性 说明这种方法会使this<em>指向</em>dom节点本身 如果想this<em>指向</em>duang对象,可以使用匿名函数解决 btn.onclick = function ()...){ duang.hi();}, 1000); setInterval( function (){ duang.hi();}, 1000); 可以看到,这种直接调用和通过匿名函数间接调用 对this<em>的</em><em>指向</em>影响很大...函数 这时<em>的</em>点击结果为 "I'm 全局",说明this指向了window对象 注意,使用call和apply调用方法时,this指向会被改为window

1.4K110
领券