码迷,mamicode.com
首页 > Web开发 > 详细

关于 js 函数参数的this

时间:2019-10-31 18:17:19      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:png   com   OLE   技术   gem   属性   efi   his   img   

先看一道面试题:

var number = 10;
function fn() {
  console.log(this.number);
}
var obj = {
  number: 2,
  show: function(fn) {
    this.number = 3;
    fn();
    arguments[0]();
  }
};
obj.show(fn);

打印的结果如下:

技术图片

 

 

 obj.show 中,第一个函数执行 fn() 结果为 10,第二个 arguments[0]() 执行结果为 undefined。

原因是:

第一个 fn 在执行时,this 指向 window,window,number 为10;

第二个 fn 在执行时,实际上为 argements.0 在执行,也就是此时的 this 为 arguments(毕竟 arguments 为伪数组,伪数组也还是对象,可理解为 obj.0)。因为 arguments 的属性中没有 number 这个属性,所以返回 undefined

关于 js 函数参数的this

标签:png   com   OLE   技术   gem   属性   efi   his   img   

原文地址:https://www.cnblogs.com/momo798/p/11772624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!