前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js中关于this指向的训练题

js中关于this指向的训练题

作者头像
小明爱学习
发布2020-07-06 17:50:46
7880
发布2020-07-06 17:50:46
举报
文章被收录于专栏:smh的技术文章smh的技术文章

this指向是js开发中必须掌握的知识,今天我们就用一道题目来看看你的基础。

各位认为会输出什么呢?请大家先思考不要直接去运行看答案。

实际上会输出:5和2。

首先我们找到method,里面的两段代码实际都是执行了fn函数,只是this对象不同。

(1):第一行fn(),这个毫无疑问,this指向的是window,所以length自然输出5,大家不要看到fn()在obj对象里面调用,就把this认为指向了obj,这是非常错误的;

this指向谁,是在于函数执行时的环境对象,fn()在执行时,他的环境对象依然是window,这里的fn()大家可以理解为window.fn(),是这样进行执行的。

(2):第二行arguments[0]();大家都知道这个对象是获取函数参数列表的,我们调用method一共传入了两个参数,第一个为fn函数,第二个则是10这个数字,arguments[0]则取了fn这个函数变量指针,然后在后面加上()执行了这个函数。

重点是,在arguments中有一个length属性,是记录一共传入几个参数。 

        所以,这里大家可以理解为:arguments[0]()=arguments.fn();

this对象就是指向了arguments,length也自然是2了。

大家明白了吗,这道题对于this指向还是比较经典的题目,如果这道题可以独立做出来,证明this指向这块,你基本上是过关的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年07月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档