每个函数包含两个属性:长度和原型。

长度:当前函数希望接受的命名参数的数目。

原型:这是保持他们所有力量方法的真正地方。

复制代码代码如下所示:

功能sayname(name){

警报(名称);

}

函数sum(num1,num2){

返回num1 + num2;

}

功能sayhi(){

警报(嗨);

}

警报(sayname。长度); / / 1参数

警报(总和,长度); / / 2参数的数量是2

警报(sayhi。长度); / / 0没有参数



每个函数包含两个非继承的方法:应用()和调用()

所有这两种方法都在一个特定的范围内调用一个函数,这个函数实际上等于在函数中设置这个对象的值。

首先,应用()接受两个参数:一个是函数运行的范围,另一个是参数数组(可以是数组实例或参数对象)。

复制代码代码如下所示:

函数sum(num1,num2){

返回num1 + num2;

}

功能callsum1(num1,num2){

返回sum.apply(这个参数); / /传入的参数对象

}

功能callsum2(num1,num2){

返回sum.apply(,{ num1,num2 });

}

警报(callsum1(10, 10)); / / 20

警报(callsum2(10, 20)); / / 30



第二,调用方法的第一个参数不改变,其余参数是传递参数,传递给函数的参数需要一一列举。

复制代码代码如下所示:

函数sum(num1,num2){

返回num1 + num2;

}

功能callsum(num1,num2){

返回sum.call(这,num1,num2);

}

警报(callsum(10, 200));



哪种方法更方便使用完全取决于你的愿望。如果没有参数,哪一个是一样的。

然而,应用程序和调用方法的出现绝不仅仅限于如何获得船体参数。

它们的真正用途在于功能扩展的范围。

复制代码代码如下所示:

window.color =红色;

颜色:蓝色};

功能saycolor(){

警戒(这个颜色);

}

SayColor(); / /红色

SayColor.call(本); / /红色

saycolor.call(窗口); / /红色

saycolor.call(O); / /蓝色



使用应用程序和调用扩展操作范围的最大优点是不需要与方法有任何耦合关系。

ecmascript5还定义了一个方法:把(),该方法创建一个函数实例,其价值必然要通过绑定功能的价值

复制代码代码如下所示:

window.color =红色;

颜色:蓝色};

功能saycolor(){

警戒(这个颜色);

}

无功bindfun = saycolor.bind(O);

BindFun(); / /蓝色



以上是本文的全部内容,希望合作伙伴能喜欢。