问题是这样:我想写一个组件方法,方法中定义了this。当不同的按钮点击时调用这个方法,this都能指向这个按钮,然后获取到按钮的一些属性。然而事实是不管怎么调用this都指向了window,也想到调用这个方法时候把this作为参数传进去可以解决,但是总觉得不太妥。代码大概是这样子:
var scale=function(){
var that=$(this);
console.log(that)
};
$(".btn").on("click",function(){
scale();//这里想要函数中的this指向这个".btn"
})
请各位大侠指导下~小白在此万分感谢
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
函数当做函数调用的时候, 内部 this 要么指向window, 要么是 undefinded(严格模式),
你那样写, 明显就是函数调用, 理所当然的就是指向 window 啦.
当函数被注册成事件处理器的时候, 函数内部的 this 是指向发生事件的 DOM 节点.
所以, 直接这样
就可以了.
也可以参考其他回答, 用 bind, call, apply 绑定 this .
这个打出的是dom
var 创建里全局变量,然后function就指向了全局,所以this就是全局的。
on绑定的对象是btn,所以这里的this就是指向了btn。
作用域要多查查看看就好,this这个东西在做封装插件的时候经常用到的。
具体可以看看搜搜看,这里就不打太多了
this 是动态改变的,按情况可以分为
函数调用 this 为 window
对象方法调用 this 为该对象
new构造函数调用 this 为 构造函数默认返回的对象(如果手动返回一个对象就会覆盖该对象)
bind,call,apply 调用 this 为绑定的对象。