它可以是全局對象、當(dāng)前對象或者任意對象妓美,this是個不固定的值,他是根據(jù)我們調(diào)用的動態(tài)來改變的鲤孵;
作為函數(shù)調(diào)用
在函數(shù)被直接調(diào)用時this綁定到全局對象壶栋。在瀏覽器中,window 就是該全局對象
console.log(this);
function fn1(){
console.log(this);
}
fn1();
作為對象方法調(diào)用
在 JavaScript 中普监,函數(shù)也是對象贵试,因此函數(shù)可以作為一個對象的屬性,此時該函數(shù)被稱為該對象的方法凯正,在使用這種調(diào)用方式時毙玻,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>