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
实例化对象时要用new调用构造函数。
var x = new a(5)
var y = new a(6)
你确定一个是undefined,一个是6?我在自己电脑上跑了,非严格模式下两个都是6。严格模式下会报错。你这种调用方式,在非严格模式下,a函数里面的this其实是全局对象window,相当于window.x=xx,return window。这样一来,x和y其实都是window。在严格模式下this是undefined,undefined.xx会报错。
都是6吧
和js 预编译有关,x,y先变量提升,然后执行两个方法之后,this.x = xx这个使得x=6,所以最后x=6,y是window对象,所以window.x=6。关键点事var x与 你赋值的this.x=xx属性名重复了