`
sony-soft
  • 浏览: 1027789 次
文章分类
社区版块
存档分类
最新评论

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>

分享到:
评论

相关推荐

    javascript中apply和call方法的作用及区别说明

    1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...

    JavaScript对象创建模式实例汇总

    主要介绍了JavaScript对象创建模式,结合实例形式总结分析了JavaScript常见的对象创建模式,包括工厂模式、构造函数模式、原型模式、动态原型模式、寄生构造函数模式、稳妥构造函数模式等,需要的朋友可以参考下

    JavaScript完全自学宝典 源代码

    ajaxmodel.war Ajax实例应用的项目文件(可直接在Tomcat中发布运行)。 \ajaxmodel\amel\html\firstAjax.jsp 显示XMLHttpRequest对象状态。 \ajaxmodel\amel\html\userReg.html 完成验证的客户端页面。...

    JavaScript函数Call、Apply原理实例解析

    这篇文章主要介绍了JavaScript函数Call、Apply原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、方法重用 使用 call() 方法,您可以编写能够在...

    Javascript call及apply应用场景及实例

    主要介绍了Javascript call及apply应用场景及实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    JavaScript核心概念及实践 高清PDF扫描版 (邱俊涛).pdf

    《JavaScript核心概念及实践》不仅帮助读者迅速掌握JavaScript基础知识和核心技术,而且通过实例讲解如何将这些知识和技术理解应用到实际工作中,提升编程能力,以简洁、优美的代码开发出功能强大且更易于维护和扩展...

    【JavaScript源代码】JavaScript中实现new的两种方式引发的探究.docx

    JavaScript中实现new的两种方式引发的探究  当你 new 一个构造函数时发生了什么? “众所周知”的三步: 创建一个空对象,将它的引用赋给 this,继承函数的原型;通过 this 将属性和方法添加至这个对象;最后返回...

    【JavaScript源代码】JS数组降维的几种方法详解.docx

     二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); //...

    JavaScript获取数组最小值和最大值的方法

    本文实例讲述了JavaScript获取数组最小值和最大值的方法。分享给大家供大家参考。具体如下: var arr = new Array(); arr[0] = 100; arr[1] = 0; arr[2] = 50; var min = Math.min.apply(null, arr), max = Math....

    javascript中call apply 的应用场景

    call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.

    Javascript中call和apply函数的比较和使用实例

    一些简单的Javascript操作中较少会用到call和apply函数,在另外一些较大型的操作中,如web应用开发,js框架开发中可能会经常遇到这两个函数。关于这两个函数的解释,网上的资料也很多,但是本人认为很多资料要么...

    JavaScript中call和apply方法的区别实例分析

    本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...

    JavaScript将一个数组插入到另一个数组的方法

    本文实例讲述了JavaScript将一个数组插入到另一个数组的方法。分享给大家供大家参考。具体分析如下: 这段JS代码可以通过Array.prototype.push.apply方法将一个数组插入到另外一个数组,下面的代码将数组b插入到a ...

    JavaScript函数apply()和call()用法与异同分析

    本文实例分析了JavaScript函数apply()和call()用法与异同。分享给大家供大家参考,具体如下: JavaScript的函数是对象,因此有属性和方法。每个函数都包含两个属性:length和prototype,每个函数都包含两个非继承而...

    javascript中call,apply,callee,caller用法实例分析

    本文实例讲述了javascript中call,apply,callee,caller用法。分享给大家供大家参考,具体如下: 实践一:call,apply 用来让一个对象去调用本不属于自己的方法,两者都可以传递参数,call的参数是列表形式,apply的...

Global site tag (gtag.js) - Google Analytics