函数的this指向是根据函数调用时所处的执行环境来确定的。

this指向对象的情况有四种:

1.使用new关键字时:this会绑定构造函数所创建的对象。

function Foo(){
    this.a = 1;  
}

var bar = new Foo();  //此时this绑定为Foo构造函数所创建的对象。

  

2.使用 call, apply, bind方法调用:this 会绑定 call, apply 的第一个参数的引用对象。

function foo(){
  console.log(this.name);  
}

var a = {name : "i'm apply!"};
var b = {name : "i'm bind!"};
var c = {name : "i'm call!"};

foo.apply(a);   //此时this 绑定在a对象;
foo.bind(b);    //此时this 绑定在b对象;
foo.call(c);    //此时this 绑定在c对象;

  

3.在某个上下文的对象中被调用:this绑定所处上下文对象。

4.默认绑定:this 在 “严格模式下为”:undefined, “非严格模式下”绑定全局对象。

function foo(){
  console.log(this.name);  
}

var f = {
  name: "i'm foo!",
  foo: foo  
}

f.foo() // 此时this绑定在foo对象;

var name = "window";
foo() //此时this默认绑定全局对象;

 

 

 

       
posted on 2019-11-29 12:09  就是10  阅读(522)  评论(0编辑  收藏  举报