aa.this的指向

1. 普通函数中的this指向

function fn(){
  console.log(this)
}
fn()

普通函数this指向global也就是window

2. 定时器方法中的this指向

setInterval(function(){
  console.log(this)
},2000)
setTimeout(function () {
  console.log('this',this)
},3000)


定时器this指向window

3. 构造函数中的this指向

function a(){
  console.log(this)
  this.aa = function (){
    console.log(this)
  }
}
a()

普通函数this指向window(global)


function a(){
  console.log(this)
  this.aa = function (){
    console.log(this)
  }
}
var A = new a()
A        //a {}
console.log(a.prototype)            //a {}
console.log(A.__proto__)            //a {}

构造函数中this指向构造函数的实例对象a{}同于原型链原型对象

4. 对象方法中的this指向

function a(){
  console.log(this)
  this.aa = function (){
    console.log('this',this)
  }
}
var A = new a()
A.aa()
//a {}
//this a { aa: [Function] }

对象方法中的this指向实例对象

5. 原型对象方法中的this指向

function a(){
  a.prototype.aa = function (){
    console.log('this',this)
  }
}
var A = new a()
A.aa()   //this a{}

原型对象方法中的this指向实例对象

6. call()与apply() 改变this指向

function fn(name,age){
  console.log(this,name,age)
}
fn.call(1,'aaa',10)            //[Number: 1] 'aaa' 10
fn.call({a:10,b:20},'bbb',20)            //{ a: 10, b: 20 } 'bbb' 20
fn.apply(1,['aaa',10])       //[Number: 1] 'aaa' 10
fn.apply({a:10,b:20},['bbb',20])       //{ a: 10, b: 20 } 'bbb' 20

你可能感兴趣的:(aa.this的指向)