this的情况:
1,普通函数this指向全局对象window,在严格模式‘use strict’,this的指向是undefined
如图:
1,
function fn() {
console.log(this); // window
}
fn(); // window.fn(),此处默认省略window
2,
function fn() {
“use strict”
console.log(this); // underfined
}
fn();
2,方法形式调用this是调用方法的对象
var obj = {
fn: function () {
console.log(this); // obj
}
}
obj.fn();
3,以构造函数的形式调用时,this指向实例化对象
function Person(age, name) {
this.age = age;
this.name = name
console.log(this) // 此处 this 分别指向 Person 的实例对象 p1 p2
}
var p1 = new Person(22, 'zs')
var p2 = new Person(22, 'ls')
4,事件绑定的this指向事件对象
<body>
<button id="btn">hh</button>
<script>
var obtn = document.getElementById("btnN");
obtnN.addEventListener('click',function(){
console.log(this); // btn
},false)
obtnN.onclick = function() {
console.log(this); // btnN
}
</script>
</body>
5,定时器函数,this指向window
setInterval(function () {
console.log(this); // window
}, 1000);
4,箭头函数:箭头函数的this看外层是否有函数,
如果有,外层函数的this就是内部函数的this
如果没有,就是window