Js避免耦合的方法:arguments.callee
耦合是指两个或两个以上的模块之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传递值的现象。
我们要知道:
arguments.length 是实参长度
arguments.callee.length 是形参长度
举例如下:
function test(x,y,z)
{
checkArgu(arguments);
return x+y+z;
}
function checkArgu(argu)
{
var argu_test1, argu_test2;
argu_test1 = argu.length;
argu_test2 = argu.callee.length;
if(argu_test1 == argu_test2)
alert(argu_test2);
else
alert(argu_test1);
}
test(1,2,3);//3
test(1,2,3,4);//4
JS中使用arguments.callee实现匿名函数的递归
var b=(function(n){
if(n>=1) return n+arguments.callee(n-1);
else return 0;
})(10);
alert(b);//55
注:
arguments是函数内部的一个特殊对象,其中callee属性是一个指针,指向拥有这个arguments对象的函数。为了实现更松散的耦合,还可以使用arguments.callee.caller;注意:严格模式下使用arguments.callee会出错。
(PS:严格模式,是指将代码中的错误提前到编译期来发现、调试、处理,以增加程序的健壮性; 标准模式,是批代码中的错误放到运行期处理,这种模式对调试程序不是太好。)
软件工程中对象之间的耦合度就是对象之间的依赖性。