Javascript 中的this指向

1、作为对象的方法调用,this值当前对象

   var obj={
         name:"xiao",
          getName(){
this.name //xiao } }
obj.getName();

2、作为普通函数调用  this指向window,  当一个函数体 ,自执行时,里面的this指向window,若想改变this  可以var that = this  

  var obj={
         name:"xiao",
          getName(){

            this.name   //xiao
  }  
}    
var fn = obj.getName

fn();//undefined

3、构造函数调用时   指new的对象

function fn(name){
     this.name=name  
     return {
        name:'bb'
    }
}

var obj =new fn('gg')

obj.name//  bb  this指返回的对象

还有一种情况如果此时构造函数  显示的返回一个对象的话 那么this指向  返回的对象  而不是new的对象

所以,如果构造函数返回一个非对象类型数据的话,就不会造成上面的问题

4、call ,apply

它们俩都是强制改变this指向,它们都是接受两个参数,第一个则是this,第二个是参数,

apply要求第二个参数是一个集合  数组或者类数组,call则是单个参数,call一般用于参数确定的情况,apply则用于参数不确定的情况

原文地址:https://www.cnblogs.com/zjpzjp/p/7376724.html