Javascript .apply()应用实例

一般我们呼叫Function时,都会写成funcName(arg1, arg2, ...)的形式。但像jQuery里的事件函数,都用this来存取触发事件的元素,若想由程序自行呼叫这些事件函数,就只能由元素去trigger()事件。传统funcName()的呼叫方式,因无法指定this,显然就无法满足这种情境下的需求。

apply()call()Function型别的两个Methodapply()的语法是funcName.apply(thisArg, argsArray),第一个传入的参数在就是函数中的this,而第二个参数则可传一个参数数组给该函数。call()apply()用途相同,唯一的差别在于,call()必须一一明列出参数,例如funcName.call(thisArg, arg1, arg2, ...)

底下是个例子,我写了一个Button Click事件,其中用了this.value去取Button的显示文字,并做一些后续的处理。范例里只是个alert,但如果这些处理逻辑很复杂,我们想应用在Button Click以外的其他用途,依正统的程序架构设计,应将这段逻辑拆出来变成独立函数,这样子就可以被Button Click事件以及其他程序所共享。

但如果函数是执行期间动态指定的,或者你只是临危受命加两行程序救火(火烧屁股时还坚持做Refactoring应该会被盖布袋),此时apply()就可以帮上大忙。在以下的例子里,我假造了一颗""按钮,由于btnClick中只会用到this.value,我就宣告一个value属性充数。就这样,没有Button也能享用Button Click事件啰!

 <html>

<head>

<script type='text/javascript'>

$(function() {

function btnClick() {

    alert("Button[" + this.value + "] clicked!");

}

$("#a").click(btnClick);

var virtualButton = { value: "V" };

btnClick.apply(virtualButton);

});

</script>

</head>

<body>

<input type="button" value="A" id="a" />

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值