下列题目关于JS的运行环境,作用域与this的指向问题,作为一个前端初学者已经晕了,希望有大佬解答一下。

chrome与本地node环境同样的代码输出的却不一致
下面是代码块:

var a = 0;
var obj = {
  a : 1,
  b : this.a,
  c : function(){
    return this.a;
  },
  d: () => this.a
}
console.log(obj.b)
console.log(obj.c() )
console.log(obj.d())

下面是chrome的输出:
image.png
下面是本地node的输出:
image.png

关于this

function fn()
{
  this.user = 1;
  return 1;
}
var a = new fn;
console.log(a.user); 
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function fn()
{
  user = 1;
  return 1;
}
var a = new fn;
console.log(a.user); 

关于这个问题,我本来想提问为什么分割线之上输出的是1,分割线之下输出的是undifined;但是在我写的时候突然有这么一个解释,不知道对不对,我写一下:
第一个fn,输出的是构造函数fn生成的对象a的属性,而且在声明对象的时候将自己的属性赋值为1;
第二个fn下面,执行构造函数时将全局变量user赋值为1,a并没有属性user,所以输出为undifined.

回复
阅读 474
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏