当前位置:网站首页>this指向问题
this指向问题
2022-08-08 06:21:00 【Youser511】
函数的不同调用方式决定了this的指向不同
1:普通函数 this指向window
var a = 4;
function fn(){
console.log("普通函数的this" + this);
}
// window.fn()
// console.log(window)
2:对象的方法 this指向的是对象o
var o = {
sayHi:function(){
console.log("对象的方法this" + this)
}
}
// o.sayHi()
3:构造函数this指向 构造函数的实例对象
原型对象里面的this 指向的也是实例对象
function Star(){
}
Star.prototype.sing = function(){
}
var s = new Star()
4:绑定事件函数 this指向的是函数的调用者
var btn = document.querySelector('button');
btn.onclick = function(){
console.log(this); // btn
}
5:定时器函数 this指向的也是window
window.setTimeout(function(){
console.log(this,"定时器函数")//window
},1000);
6:立即执行函数 this还是指向window
(function() {
console.log("立即执行函数" + this);//window
})();
7:箭头函数 this指向的是箭头函数所在的环境的
箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。
var btn = document.querySelector('button');
btn.onclick = function(){
window.setTimeout(()=>{
console.log(this,"定时器函数")//btn
},1000);
}
btn.onclick = ()=>{
console.log(this);//window
}
配合改变this指向食用
边栏推荐
猜你喜欢
随机推荐
独立成分分析ICA/FastICA
And an array merge rank by rank
2021年度总结
YoloV4训练自己的数据集(五)
补坑 模拟散列表
图像融合评价方式
Kingbase ES创建过程,报错:PL/SQL block not end correctly
在AWS CodeBuild中更新Lambda导致进程被占用(status error 255)的解决方案
leetcode 232. Implement Queue using Stacks
装机~ E5 剪辑
“独家全新”MySQL进阶套餐,你确定不看吗?
终于搞懂了 super(XXXX, self).__init__()的作用是啥了
学习go语言,你要遵循什么样的学习路径才能学明白?
分类任务说明
YoloV4训练自己的数据集(一)
基于knn的手写数字识别
“忙碌”的 Polkadot最新努力,对DOT投资者意味着什么?
使用C语言实现Hailstone序列
C语言三子棋游戏进阶版详解(包括多子棋)
The pta patching simple graph theory









