javascript中方法的定义、无重载、传参等技术的详解
javascript中的三种方法的定义方式:
1> 实名方法function
function add(x,y)
{ alert(x+y); }
2> 匿名方法function
var add = function(x,y) //此为匿名方法。
{ alert(x+y); }
3> Function(形式最高级)
var add = new Function(“x”,”y ”,alert(10);”);
add(1,2); //结果为10;
说明:最后一个参数对应自定义函数的方法体,前面的各个参数对应自定义函数的参数。
javascript中没有方法的重载概念:
首先看下面的一个例子,我们在javascript中定义下列两个方法:
function add(x,y)
{
alert(x+y);
}
function add(x,y,z)
{
alert(x+y+10);
}
add(1,2)
运行结果是13,add(1,2)传递的两个参数,按理来说应该调用第一个函数,却为何调用第二个函数?
因为第一个方法等价于:
var add = function(x,y)
{
alert(x+y);
}
第二个方法等价于:
var add = function(x,y)
{
alert(x+y+10);
}
所以add引用首先指向的是第一个方法产生的实例,然后第二个方法产生的实例又指向了add,导致第一个方法产生的实例成为垃圾对象,add引用真正代表的是第二个方法产生的对象的实例,这才导致结果是13。
javascript中的方法的传参
在javascript中并不是自定义的方法中有几个参数在调用的时候就需要传递几个参数的,这就产生了两个概念,一个是期望接收到的参数个数,一个是实际接收到的参数的个数。这点要和java区别开来。
(1)方法期望接收到多少参数需要使用下列语句获得
方法名.length
(2)方法实际接收到多少参数需要由arguments对象来解决。
在javascript中,每个方法都有一个隐含的对象arguments,表示给函数实际传递的数值。arguments[0]代表的是传递给函数第一个数值,如:
var add=function (x,y,) //期望接收到两个参数
{
//使用arguments.length获得实际传递给函数的参数。
arguments[0];
arguments[1];
arguments[2];
}
add(1,2,3,4); //调用时实际传递了四个参数
此时的arguments[0]代表的是1,arguments[1]代表的是2,arguments[2]代表的是3,与方法的参数”x”,”y”,"z”个数和形式都没有关系的。
在javascript中使用escape(string)方法
该方法可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。该方法不会对 ASCII字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )。其他所有的字符都会被转义序列替换。