JavaScript函数调用方式

本文详细解析了JavaScript函数调用规则,特别是事件处理中的this指向问题,并通过实例展示了不同调用方式对结果的影响。同时,还介绍了如何利用jQuery等库简化this的指向,确保事件处理函数正确引用当前事件源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript函数调用规则

在一个使用方法调用语法,像 obj.myFunction()或者 obj['myFunction'](),这时this的值为obj

这是事件处理代码中bug的主要源头,看看这些例子

<input type= "button" value= "Button 1" id= "btn1"  />
<input type= "button" value= "Button 2" id= "btn2"  />
<input type= "button" value= "Button 3" id= "btn3"  onclick= "buttonClicked();" />
<script type= "text/javascript" >
function buttonClicked(){
    var text = ( this === window) ? 'window' : this .id;
    alert( text );
}
var button1 = document.getElementById( 'btn1' );
var button2 = document.getElementById( 'btn2' );
button1.onclick = buttonClicked;
button2.onclick = function (){   buttonClicked();   };
</script>
 

点击第一个按钮将会显示”btn”因为它是一个方法调用,this为所属的对象(按钮元素) 点击第二个按钮将显示”window”因为 buttonClicked是被直接调用的(不像 obj.buttonClicked().) 这和我们第三个按钮,将事件处理函数直接放在标签里是一样的.所以点击第三个按钮的结果是和第二个一样的.
使用像jQuery的JS库有这样的优点,当在jQuery里定义了一个事件处理函数,JS库会帮助重写this的值以保证它包含了当前事件源元素的引用,


//使用jQuery
$('#btn1').click(
function() {
    alert( this.id ); // jQuery ensures 'this' will be the button
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ligengdipan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值