首先想说说Javascript中函数的隐含参数:arguments
Arguments
该对象代表正在执行的函数和调用它的函数的参数。
[function.]arguments[n]
参数function :选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。
说明
Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。下边例子详细说明了这些性质:
//arguments 对象的用法。
function ArgTest(a, b){
var i, s = "The ArgTest function eXPected ";
var numargs = arguments.length; // 获取被传递参数的数值。
var expargs = ArgTest.length; // 获取期望参数的数值。
if (expargs < 2)
s += expargs + " argument. ";
else
s += expargs + " arguments. ";
if (numargs < 2)
s += numargs + " was passed.";
else
s += numargs + " were passed.";
s += "\n\n"
for (i =0 ; i < numargs; i++){ // 获取参数内容。
s += " Arg " + i + " = " + arguments[i] + "\n";
}
return(s); // 返回参数列表。
}
apply 与 call 方法
它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别:
apply(object,args);
call(object,[arg1,arg2...argn]);
即所有函数内部的this指针都会被赋值为object,这可实现将函数作为另外一个对象的方法运行的目的
apply的说明
apply()方法有两个参数,object代表用作this的对象,args代表传递给函数的参数的数组.
如果 args不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 args和 object任何一个参数,那么 Global 对象将被用作 object,
并且无法被传递任何参数。举个例子说明:
function hello(prefix,suffix){
alert(prefix+this.word+suffix);
}
var obj = new Object();
obj.word = "admin";
/*
调用apply方法,第一个参数为obj,说明应该赋予hello()中的this关键字值是
obj.第二个参数由一个数组对象,与hello的参数向匹配;最后应该生成的消息
是"Welcome admin to my page".与此同时,obj可以获得hello中所有的属性与方法
*/
hello.apply(obj,new Array("Welcome "," to my page"));
call的说明
call 方法可将一个函数的对象上下文从初始的上下文改变为由 object指定的新对象。
如果没有提供 object参数,那么 Global 对象被用作 object.它的使用与上个例子非常相似,只需 将hello.apply(obj,new Array("Welcome "," to my page")) 改为hello.call(obj,"Welcome "," to my page")后,
效果与上例完全相同.这里就不重复了.
分享到:
相关推荐
javascript callApply代码示例
理解JavaScript的caller callee call apply
JavaScript中call与apply方法
深化理解关于javascript中apply()和call()方法的区分_.docx
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
淡淡简单描述javascript中方法apply和call
javascript中apply、call和bind的用法区分_.docx
NULL 博文链接:https://cuckoosnest.iteye.com/blog/470131
NULL 博文链接:https://davidxiaozhi.iteye.com/blog/1026937
在JavaScript 中,this的指向是动态变化的,很可能在写程序的过程中,无意中破坏掉this的指向,所以我们需要一种可以把this的含义固定的技术,于是就有了call,apply 和bind这三个方法,来改变函数体内部 this 的...
Javascript – 全面理解 caller,callee,call,apply Author: BlueDestiny, never-online From: http://www.never-online.net, Blog.csdn.net/BlueDestiny 1、caller JScript参考中说明为:返回一个对函数的...
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.
在javascript中apply、call和bind是三兄弟,很好的搭档,下面小编给大家全面解析JavaScript中apply和call以及bind的相关知识,感兴趣的朋友一起学习吧
NULL 博文链接:https://ufoqhmdt.iteye.com/blog/1676748
JavaScript函数之call、apply以及bind方法案例详解 总结 1、相同点 2、区别 call() 方法 /* 正常模式 */ let obj = { sum(a, b) { console.log(this) return a + b } } // 执行 sum 函数的 apply、bind...
主要介绍了Javascript的call、apply,其作用基本相同,但也有略微的区别,需要的朋友可以参考下
《JavaScript核心概念及实践》不仅帮助读者迅速掌握JavaScript基础知识和核心技术,而且通过实例讲解如何将这些知识和技术理解应用到实际工作中,提升编程能力,以简洁、优美的代码开发出功能强大且更易于维护和扩展...
我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数