它可以是全局对象、当前对象或者任意对象,this是个不固定的值,他是根据我们调用的动态来改变的;
作为函数调用
在函数被直接调用时this绑定到全局对象。在浏览器中,window 就是该全局对象
console.log(this);
function fn1(){
console.log(this);
}
fn1();
作为对象方法调用
在 JavaScript 中,函数也是对象,因此函数可以作为一个对象的属性,此时该函数被称为该对象的方法,在使用这种调用方式时,this 被自然绑定到该对象
var obj1= {
name: 'Byron',
fn : function(){
console.log(this);
}
};
obj1.fn();
DOM对象绑定事件
在事件处理程序中this代表事件源DOM对象
<input type="text" id="input" value="3">
var input = document.getElementById('input');
input.onclick = function (){
alert(this.value);
<div id="div1">1111</div>
var div = window.document.getElementById('div1');
console.log(div);
div.onclick = function(){
console.log(this);
}
var a=2;
function foo(){
alert(this.a);
}
var obj = {
a: 1,
fooObj: foo
}
window.foo();
window.a;
foo();
obj.fooObj();
自定义属性
<div id="div1">1111</div>