js中的this问题

问题1

$("#ad").click(function(){

    setTimeout(function(){
         console.log(this);
         this.style.background = "pink";
        } ,2000);
})

此时达不到把id为ad的元素背景色置为粉色。因为this指向window。
1、函数里面的this都指向window。

更改方法

$("#ad").click(function(){
let that = this;

    setTimeout(function(){
         console.log(this);
         that.style.background = "pink";
        } ,2000);
})

1)用参数记录外层this的值。

$("#ad").click(function(){

setTimeout(()=>{
console.log(this);
this.style.background = "pink";

},2000)
})

2)箭头函数的this为静态。

2、以方法的形式调用时,this 是调用方法的对象

3、以构造函数的形式调用时,this 是新创建的那个对象

4、使用 call 和 apply 调用时,this 是指定的那个对象

5、箭头函数:箭头函数的 this 看外层是否有函数 如果有,外层函数的 this 就是内部箭头函数的 this 如果没有,就是 window

6、特殊情况:通常意义上 this 指针指向为最后调用它的对象。这里需要注意的一点就是 如果返回值是一个对象,那么 this 指向的就是那个返回的对象,如果返回值不是一个对象那么 this 还是指向函数的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值