为了账号安全,请及时绑定邮箱和手机立即绑定

关于Js中 this的一道题

关于Js中 this的一道题

慕码人8056858 2018-11-21 17:13:49
var length = 10;function cl() {    console.log(this.length);}var o = {    length: 20,    show: function (fn) {        fn();        arguments[0]();    }}o.show(cl); // 10 关于这道题 我想知道js中this不是谁调用就指向谁么? 为什么 第一次调用 cl中的this还是指向window而不是o对象?我知道没有用call估计就不对了,但是为什么不对呢?第二个有为什么指向了arguments?同时 这段代码在nodejs中运行时为什么第一次输出为undifined?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

  1. 直接使用函数名字调用,无论你外面包了多少层,调用者就是window

  2. 因为那个方括号运算符,方括号运算符作为对象取值运算,在某种意义上是可以等于点.运算符的,所以这里在形式上其实可以类比成arguments.0(),你看,这不就是arguments来调用了这个函数了嘛,所以运行的时候this就指向它了。


查看完整回答
反对 回复 2018-12-29
  • 1 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信