平时大家在使用或浏览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