js各种场景下的this指针问题

平时大家在使用或浏览js代码时,都会碰到使用this关键字的情况,但是大家使用过程中会发现不同场景下this所起的作用是不同的,下面就各种场景下对this关键字进行解读

一.  当函数作为一个对象的方法时,在函数中使用this,此时this指向这个对象

var goods = { 

 name:'apple', 

 goodsName:function(){ 

     alert(this.name); // apple

     alert(this===Student); // true 

 }

}

goods.goodsName();

二.  当函数作为构造函数使用时,在构造函数中使用this,则this指向的是通过构造函数创建出来的新的对象。

function goods(name){ 

    this.name=name;

}

var goods1=new goods('apple');

alert(goods1.name); // apple

三.  在全局作用域中使用时,this就指向全局对象window。

var name='apple';

alert(this.name); //apple

alert(window.name); //apple

alert(this===window); //true

四.  使用函数的call或者apply方法将this指向其他的作用域,可以重新定义函数的执行环境,即this的指向。

var obj1 = {

    name: 'Tom', 

    getName: function() { 

        return this.name 

    }  

 var obj2 = { 

    name : 'Jack' 

 } 

console.log(obj1.getName()) ;//Tom

console.log(obj1.getName.call(obj2)) //Jack

五.  当函数作为方法调用时,this指向全局对象window。

var name = 'apple'

function goodsName() {

    return this.name

}

console.log(goodsName()); // apple

六.  setTimeout中延迟所执行函数中的this,永远指向window


你可能感兴趣的:(js各种场景下的this指针问题)