在JavaScript中的this指向
1、在构造函数中,this 指向的是 this 实例
function Person(name, age) {
this.name = name
this.age = age
console.log(this)
console.log(this.__proto__.constructor)
}
var zs = new Person('zs', 10)
var ls = new Person('ls', 20)
2、在原型对象函数里面的 this 指向的是实例对象
Array.prototype.pt = function() {
console.log(this, 111)
}
var a = [1, 2, 3, 4]
a.pt()
3、在普通函数中 this 指向 window
function fn() {
console.log(this);
}
fn();
4、在绑定事件函数中,this 指向函数的调用者
<body>
<button id="btn">按钮</button>
<script>
var btn = document.getElementById('btn');
btn.onclick = function () {
console.log(this);
};
</script>
</body>
5、定时器函数,this 指向的是 window
setTimeout(function () {
console.log(this, 111);
}, 1000);
6、对象的方法,this 指向的是对象本身
var obj = {
name: 'zs',
say: function() {
console.log('my name is' + this.name)
}
}
obj.say();
7、匿名函数的 this 指向 window,匿名函数的执行环境具有全局性,因此 this 指向一般是 window
var name = 'this window'
var obj = {
name: 'my window',
getName: function() {
console.log(this, 'this')
return function() {
return this.name
}
}
}
console.log(obj.getName()())