当前位置:网站首页>this指向问题
this指向问题
2022-08-02 03:35:00 【呦呦鹿鸣[email protected]】
this 是指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向是调用它的对象
1、全局作用域或者普通函数中this指向窗口顶级对象window(注意定时器里面this指向window)
console.log('全局:',this);
function demo(){
console.log('demo:',this);//window
// 这里的函数 其实也是再全局下调用的 相当于window.demo() 所以打印的结果还是window
}
demo();
window.setTimeout(funtion() {
console.log(this);
},1000)
2、 对象里面的this指向
var person = {
realname:'张三',
age:20,
say:function(){
console.log('说话');
console.log(this);//指向的是当前对象本身 person
}
};
console.log(person.realname);
person.say();
3、构造函数里面的this指向问题
function Person(realname,age){
this.realname = realname;
this.age = age;
this.say = function(){
console.log('说话');
console.log(this);//构造函数里面的this 指向的是实例化的这个对象
// 实例化指的是 new出来的实例
}
}
var p1 = new Person('李四',22);
var p2 = new Person('王武',23);
p1.say();
p2.say();
4、在定时器里面的this指向
var btn= document.querySelector('#btn');
btn.onclick = function(){
console.log(this);//btn对象
setTimeout(function(){
console.log(this);//定时器 是window调用的 所以这里打印的是window
},1000)
}
5、案列中的this指向
<input type="number">
<button>发送</button>
<script>
var btn=document.querySelector('button');
var time=3;
btn.addEventListener('click',function(){
btn.disabled=true;//可以修改成this.disabled=true;其指向的是btn
var timer=setInterval(function(){
if(time==0){
clearInterval(timer);
btn.disabled=false;//不可修改this指向,其函数指向的是定时器函数(即window对象),不是btn对象下的函数
btn.innerHTML='发送'
}else{
btn.innerHTML='还剩下'+time+'秒';
time--;
}
},1000);
})
</script>
版权声明
本文为[呦呦鹿鸣[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_53841687/article/details/125540120
边栏推荐
猜你喜欢
随机推荐
视频监控平台-国标28181-2016版平台,已公网部署
树莓派上FFMPEG/VLC播放海康网络摄像仪视频
windows系统下php-ffmpeg类库的使用
企业需要知道的5个 IAM 最佳实践
功能性网站
开箱即用的职场办公常用功能:全文检索、便签、云笔记
Mysql数据库入门 (基础知识点 由来 各种指令 如何运用)
Hash table problem solving method
空卡安装设置树莓派4B并安装opencv+QT
学习(二):单例模板
剑指Offer 31.栈的压入、弹出
CC1101魔幻的收发切换机制
运行时应用自我保护(RASP):应用安全的自我修养
[Database] Four characteristics of transaction
webdriver封装
Process (in): process state, process address space
KMP 字符串匹配
STM32F4 CAN 配置注意的细节问题
Go的安装使用(一)
matlab作图显示中文正常,保存图片中文乱码