一、x到底是谁?
function a(xx){
this.x = xx;
return this
};
var x = a(5);
var y = a(6);
console.log(x.x) // undefined
console.log(y.x) // 6
- 我们会判断错误的可能原因是被变量名x误导.
分析
this指向调用方法的环境,所以window为本例子中的this
-
var x = a(5)
- 执行右半部分
a(5),this.x = xx
相当于window.x=xx
也就是说当前windox.x = 5
然后返回window本身。 - 执行赋值
相当于重新定义了x,此刻window.x = a(5)的返回值window
- 测试输出
console.log(x.x)
打印出window
- 执行右半部分
-
var y=a(6)
- 执行右半部分
a(6),this.x = xx
相当于window.x=xx
也就是说当前windox.x = 6
然后返回window本身。 - 执行赋值
此刻window.y = a(6)的返回值window
- 测试输出
console.log(x.x)
打印出undefined
,因为x.x
等价6.x
,结果自然为undefined
console.log(y.x)
打印6
- 执行右半部分