一个参数,使用简易来电,被叫方,适用于JS
在提到上述概念之前,首先,我们要讨论Javascript参数中函数的隐含参数。争论
此对象表示正在执行的函数和调用其函数的参数。
{函数}参数}
参数函数:选项。当前正在执行的函数对象的名称。n:选项。从0传递给函数对象的参数值索引。
解释
参数是一个隐藏对象,在函数调用时,除了指定参数之外,还创建一个隐藏对象。它与数组相似,因为它具有与数组相同的访问属性和方式。它可以通过参数{N}和数组的长度属性长度访问相应的单参数的值。另一件事是,争论的对象存储参数是传递给函数,不限于通过函数的声明定义的参数列表,并不能显式地创建参数对象。议论对象仅当函数的开始。下面的例子说明了这些特性:
复制代码代码如下所示:
参数对象的用法。
功能argtest(A,B){
var i,S = argtest预期功能;
无功numargs = arguments.length; / /得到的值传递参数。
无功expargs = argtest.length; / /获得期望的数值参数。
如果(expargs<2)
S = expargs +论点;
其他的
S = expargs +论据;
如果(numargs<2)
S = numargs +了;
其他的
S = numargs +了;
s
为(i = 0;i < numargs;i++){ / /得到的参数内容。
s = i +参数;
}
返回(s);返回参数列表。
}
这里添加了一个代码,该参数显示数组不是数组(数组类):
复制代码代码如下所示:
array.prototype.selfvalue = 1;
警报(新数组()。Selfvalue);
功能testaguments(){
警报(参数。自我价值);
}
运行代码,你会发现第一报警显示1,这表示数组对象都有一个自我价值属性的值是1,当你打电话给testaguments功能,你会发现,显示的是未定义的,产权不争论,辩论不是数组对象。
来电
返回调用当前函数的函数的引用。
functionname.caller
该函数名对象执行的函数名称。
解释
一个函数,调用定义属性只有当函数被执行。如果函数调用的顶层,然后调用包含零。如果调用属性用在字符串上下文,结果是functionname.tostring相同,也就是说,该函数的分解的版本显示。
下面的示例演示调用方属性的用法:
复制代码代码如下所示:
调用程序演示
功能callerdemo(){
如果(callerdemo。来电){
创建一个callerdemo.caller.tostring();
警报(a);
{人}
警报(这是一个top函数);
}
}
功能handlecaller(){
CallerDemo();
}
被叫
返回正在执行的函数对象,即指定函数对象的主体。
{ } arguments.callee功能。
可选的函数参数是当前正在执行的函数对象的名称。
解释
callee属性的初始值是正在执行的函数对象。
callee属性的参数对象的一个成员。它指的是对函数对象本身的引用,这有助于匿名函数的递归函数或函数的封装。例如,递归计算的1个自然数N的例子是递归的。此属性仅当相关函数正在执行,也要注意,被调用方的长度属性重要,有时是用来验证或是better.arguments.length是一个参数的长度,和arguments.callee.length是参数的长度,从而判断参数的长度是符合参数的长度时,称为。
样品
复制代码代码如下所示:
/ /被叫方可以打印自己的
功能calleedemo(){
警报(参数。被叫方);
}
验证参数
功能calleelengthdemo(arg1,arg2){
如果(参数。长度= =争论。被叫。长度){
Window.alert(验证参数的参数和长度正确!;
返回;
{人}
警报(参数长度:+参数。长度);
警报(长度的参数:+论据。被叫。长度);
}
}
递归计算
var =函数(n){
如果(n 0)
返回0;
其他的
返回narguments.callee(n - 1)
}
更一般的递归函数:
复制代码代码如下所示:
var =函数(n){
如果(n=0)
返回0;
其他的
返回n和(n-1);
}
调用时调用:警报(和(100));
函数包含对和自身的引用。函数名仅为变量名。调用函数内的和等于调用全局变量。它没有反映电话本身,所以使用被叫方是一个很好的方法。
申请电话
它们的功能是将函数绑定到要运行的另一个对象,这两个对象只在定义参数的方式上有所不同:
申请(thisarg,argarray);
电话(thisarg {,arg1,arg2…} });
这是,这里面的所有函数指针赋给thisarg,实现办学功能的另一个目的。
申请说明
如果argarray不是有效的阵列或争论的对象,然后将引发TypeError。
如果对argarray和thisarg参数没有设置,那么全球对象将作为一个thisarg,
不能在任何参数上传递。
呼叫描述
调用方法可以改变一个函数对象上下文从初始上下文的thisarg指定新的对象。
如果没有提供thisarg参数,则全局对象作为thisarg
相关的技能:
应用调用和应用还有另外一种技巧,即使用调用并应用另一个函数(类)。在此之后,当前函数(类)有另一个函数或类属性,也可以称为继承:
复制代码代码如下所示:
演示/继承
函数基(){
this.member =dnnsun_member ;
这种途径对等=函数(){
Window.alert(的成员);
}
}
函数扩展(){
base.call(本);
Window.alert(成员);
Window.alert(这种方法);
}
上面的例子说明,在调用之后,扩展可以继承基的方法和属性。
顺便说一下,在Javascript框架原型中,您可以使用应用程序来创建定义类的模式,
实际代码如下所示:
复制代码代码如下所示:
var类{ { {
创建:函数(){
返回函数(){
This.initialize.apply(这个参数);
}
}
}
解析:从代码中,对象只包含一个方法:创建,它返回一个函数,即类,但这也是一个类构造函数,它调用初始化,这是在创建类时定义的初始化函数,这样就可以实现原型中的类创建模式。
实例:
复制代码代码如下所示:
VaR class.create(车辆);
车辆。原型= {
初始化:函数(类型){
类型=类型;
}
showself:函数(){
警报(该车辆+此类型。);
}
}
新的车辆();
Moto.showSelf();