一起来看下面几段代码:
1:
function Fn() { this.userName = 'lzh'; return {}; } var a = new Fn(); console.log(a.userName); //undefined
2:
function Fn() { this.userName = 'lzh'; return function(){}; } var a = new Fn(); console.log(a.userName); //undefined
3:
function Fn() { this.userName = 'lzh'; return 1; } var a = new Fn(); console.log(a.userName); //lzh
function Fn() { this.userName = 'lzh'; return undefined; } var a = new Fn(); console.log(a.userName); //lzh
想说明什么呢?
如果返回值是一个对象,那么this的指向就是那个返回的对象;如果返回值不适一个对象,那么this还是指向函数的实例
function Fn() { this.userName = 'lzh'; return undefined; } var a = new Fn(); console.log(a); //fn
补充1:
null也是对象(空对象)但是this还是指向函数的实例:
function Fn() { this.userName = 'lzh'; return null; } var a = new Fn(); console.log(a.userName); //lzh
补充2:
严格版中的默认的this不再是window,而是undefined。