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的输出:
下面是本地node的输出:
关于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.