js中的对象方法中this指向问题

对象方法
调用this所在函数fn的是b,所以this指向b,b.a1='hello a3' ,b没有a2属性,b.a2=undefined
var a1='hello a1'
var a2='hello a2'
var b={
  a1:'hello a3',
  fn:function(){
    console.log(this.a1) // hello a3
    console.log(this.a2) // undefined
  }
}
b.fn()
换一种情况,var fn1=b.fn只是赋值,fn1()时才发生了调用,调用对象为window,this指向window
var a1='hello a1'
var a2='hello a2'
var b={
  a1:'hello a3',
  fn:function(){
    console.log(this.a1) // hello a1
    console.log(this.a2) // hello a2
  }
}
var fn1=b.fn
fn1()

原文地址:https://www.cnblogs.com/yuxingxingstar/p/15654877.html