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

JS中this指向

JS中this指向 this指向在函数定义时候是确定不了,只有函数执行时候才能确定this到底指向谁,实际上this最终指向是那个调用它对象。...实例 定义函数与对象并调用,注意只有调用函数才会使this指向调用者,但箭头函数除外。...(this); } }, t5: function(){ // 测试函数调用时箭头函数this指向,其指向了上一层对象调用者 return {...,我们调用同一个方法,但是得到this是不同,要注意实际上this最终指向是那个调用它对象 var s1 = { t1: function(){ console.log...由此,this指向了window 改变this指向 使用 apply、call、bind可以改变this指向,可以参考 https://github.com/WindrunnerMax/EveryDay

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

JSthis指向问题

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

94230

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

79310

关于JS中this指向问题探究

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

1.4K31

面试官问:JSthis指向

1.面试官问:能否模拟实现JSnew操作符 2.面试官问:能否模拟实现JSbind方法 3.面试官问:能否模拟实现JScall和apply方法 4.面试官问:JSthis指向 5.面试官问:JS...继承 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。...之前写过一篇文章:面试官问:能否模拟实现JScall和apply方法就是利用对象上函数this指向这个对象,来模拟实现call和apply。感兴趣读者思考如何实现,再去看看笔者实现。...返回值返回由指定this值和初始化参数改造原函数拷贝。 之前也写过一篇文章:面试官问:能否模拟实现JSbind方法就是利用call和apply指向这个thisArg参数,来模拟实现bind。...之前也写了一篇文章面试官问:能否模拟实现JSnew操作符,是使用apply来把this指向到生成新生成对象上。感兴趣读者思考如何实现,再去看看笔者实现。

74020

一文读懂Jsthis指向

对象方法中如果对象方法里面包含this,this指向就是方法运行时所在对象。该方法赋值给另一个对象,就会改变this指向。但是,这条规则很不容易把握。请看下面的代码。...,该方法内部this不是指向a,而是指向a.b,因为实际执行是下面的代码。...原因跟上一段多层this是一样,就是内层this不指向外部,而指向顶层对象。解决这个问题一种方法,就是前面提到,使用中间变量固定this。...:通过bind改变call指向指向bind。...也就是f调用了bind函数,结果返回一个指向of函数。然后再加括号执行bind(f,o)(),就等于执行了指向of函数。最后打印结果this指向o,因此打印出123。

87300

js中this到底指向什么?

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

91410

JS数据类型、数组、this指向复习

,删除和替换 删除:splice(要删除起始下标,删除数量) 添加:arr.splice(要插入起始位置,0,要添加值) arr.splice(2,0,'全栈1909A'...) 替换:arr.splice(要替换志起始位置,替换数量,替换值) arr.splice(4,2,'我要去阿里') 数组内置遍历方法: forEach()...也称伪数组 LikeArray,只能通过length获取数量,和通过下标指定具体某个元素,但不能使用数组API方法 类数组使用场景:获取dom集合,arguments,… – 如何将类数组转换为数组...Math.min.apply(Math,arr) Math.min.call(Math,…arr) Math.max.call(Math,…arr) Math.min() 取小值 五、this指向.../ let _this=this; setTimeout(()=> { console.log(this===btn) },0) } 总结:this通常是谁调用,this指向

1.4K10

一次搞定jsthis指向

js中this指向是在运行时会变动 这句话严谨说是有问题。 this这个关键词,在java中解释是引用当前类实例变量。...这种情况时候,代码效果就是这样 function sayThis() { // TODO console.log(this); } this.sayThis(); 复制代码 如果一个函数没有显式调用者...,那么,这个函数调用者就是此函数执行作用域中this 所以,归根结底,this是当前执行方法调用者 你以为这样就结束了?...Too young too simple js中还有三个显式绑定this方法,bind,apply,call当使用这些方法指定执行函数this时,那this基本上就是指定了 基本上?...babel编译之后 var _this = this; var sayThis = function () { console.log(_this); }; 复制代码 很容易理解箭头函数中this指向

42330

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券