this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。this的指向在函数定义的时候是确定不了的,只有在函数执行的时候才能确定, 因为this是执行上下文环境的一部分,而执行上下文需要在代码执行之前确定,而不是定义的时候。
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是“this指的是调用函数的那个对象”。下面分四种情况,讨论this的用法。
在全局下,this指向window。
console.log(this);//Window { …}
普通函数在调用时,其中的this也指向window。
var fn=function(){
console.log(this);//Window { …}
}
fn();
var obj = {
fn: function() {
console.log(this);//{fn: ƒ}
}
}
obj.fn();
注意:函数作为某个对象的一个方法,但函数不是作为对象的一个方法被调用,而是当做普通函数调用时,this依旧指向window。
var obj = {
fn: function() {
console.log(this);//Window { …}
}
}
var fn1 = obj.fn;
fn1();
function Obj() {
this.val = '前端麻辣烫';
console.log(this) //Obj {val: "前端麻辣烫"}
}
var obj1 = new Obj();
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
function fn(){
console.log(this)//{}
};
var obj={};
fn.apply(obj);
apply()的参数为null、undefined或者不传参时,默认指向全局对象Window。
function fn() {
console.log(this) //Window { …}
};
var obj = {};
fn.apply();
感谢垂阅!文章中有错误或者不全面的地方,欢迎不吝指出。
每天进步一点点,保持好心情~
始发于微信公众号: 前端麻辣烫