首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JSthis指向问题

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

93330

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指向这块,你基本上是过关

78910

关于JSthis指向问题探究

,第一,加深自己理解,重新理一遍关于这方面的知识,第二,我尽可能使用通俗简单说辞进行解释 力求让更多的人明白这个东西,第三,this是js一个关键字,很有必要单独拿出来写一篇文章。...jsthis this jsthis总是指向一个对象,也就是一个obj,但是具体指向是哪一个obj是根据具体运行时函数执行环境动态绑定,而不是函数被声明环境!...this指向 如果不考虑常用with和eval情况下,具体到实际应用,this指向大致可以分为下面四类: 作为对象方法调用 作为普通函数调用 构造器调用 Function.prototype.call...,也就是我们常见普通函数使用时候,此时this其实指向是当前全局对象,也就是windows,因为在js全局对象就是windows window.name = "globalName...JS很多别的不好理解概念差不多,用多了就明白了为什么那么写,很多时候我们看到一个错,就知道需要使用let that = this类似这样代码块解决,究其原因是他很理解错误原因吗?

1.4K31

jsthis到底指向什么?

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

90710

一文读懂Jsthis指向

对象方法如果对象方法里面包含this,this指向就是方法运行时所在对象。该方法赋值给另一个对象,就会改变this指向。但是,这条规则很不容易把握。请看下面的代码。...foreach方法回调函数this,其实是指向window对象,因此取不到o.v值。...a函数this关键字,如果指向全局对象,返回结果为123。...注意:如果是严格模式或者vue(vue默认严格模式),传入null则指向null,传入window则指向window如果call方法参数是一个原始值,那么这个原始值会自动转成对应包装对象,然后传入...myCall函数this指向调用者,也就是执行myCall函数,这里称之为a函数。将a函数引用赋值给obj.fn,等同于a函数执行时候,内部this指向obj。这里就实现了this绑定。

85800

一次搞定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

41830

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

js扩充函数作用域(改变this指向)

开始从jsthis对象说起,this对象就是函数执行环境对象。...结果分析说明 GetName函数是在全局环境定义,所以直接调用函数this就指向了全局环境,所以输出Jack。...(注意函数不加后面()时候,那时候就不是调用,那只是一个包含函数指针变量) 由于函数执行环境变成了obj对象,所以this只想就指向了obj,所以自然就输出了“Tom”。...函数扩展this对象 es5提供了三个函数非继承方法,可以直接改变this指向,但是在书中说是扩充函数作用域,但是我认为改变this指向更贴切一点。...三个方法分别为:apply,call,bing,用法都比较简单,作用也都是改变函数this指向,下面我就用代码来简单说明一下。

2.6K11

Javascriptthis指向

this this指向只和调用函数对象有关; 多层嵌套对象,内部方法this指向离被调用函数最近对象(window也是对象,其内部对象调用方法this指向内部对象, 而非window); function...原型链方法this仍然指向调用它对象; var o = { f : function(){ return this.a + this.b; } }; var p = Object.create...类构造函数,this 是一个常规对象,与构造函数this一样; 类中所有非静态方法都会被添加到 this 原型; (静态方法不是 this 属性,它们只是类自身属性。)...this 当this传入内联处理函数时,它this指向监听器所在DOM元素; 当this没有传入内联处理函数时,其this指向等同于 函数直接调用情况,即在非严格模式指向全局对象window, 在严格模式指向...this setTimeout 和 setInterval普通函数this指向全局对象window; (如果传入函数已绑定this或者是箭头函数,则不适用这条,需要继续往下看) function

88500
领券