letFn=()=>{
console.log(this)}let fn =newFn()// Fn is not a constructor
五、setTimeout & setInterval
延时函数内部的回调函数的 this 指向全局对象 window
let a =1setInterval(function(){
console.log(this)// window this ——> window
console.log(this.a)// 1 this ——> window},1000)setTimeout(function(){
console.log(this)// window this ——> window
console.log(this.a)// 1 this ——> window},1000)
六、当this遇到return
如果返回值是一个对象,那么 this 指向的就是那个返回的对象,如果返回值不是一个对象,那么 this 指向函数的实例
functionFn(){this.a =1return{}}let fn =newFn()
console.log(fn.a)// undefined this ——> {}functionFn(){this.a =1returnfunction(){}}let fn =newFn()
console.log(fn.a)// undefined this ——> function() {}functionFn(){this.a =1return''}let fn =newFn()
console.log(fn.a)// 1 this ——> fn
简述this 是 JavaScript 语言的一个关键字。它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用this 的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定 this 到底指向谁函数的不同使用场合,this 有不同的值。总的来说,this 就是函数运行时所在的环境对象一、一般的函数调用一般的函数调用属于全局性调用,因此 this 就代表全局对象 windowlet a = 1function fn() { let a = 2 console.log